Як я можу вставити
У таблиці стилів XSLT я продовжую отримувати цю помилку:
Помилка розбору XML: невизначена сутність
По суті, я хочу, щоб символ Шаблон XSLT не порушував пробіл.
Як я можу вставити
У таблиці стилів XSLT я продовжую отримувати цю помилку:
Помилка розбору XML: невизначена сутність
По суті, я хочу, щоб символ Шаблон XSLT не порушував пробіл.
Відповіді:
Використовуйте  
замість коду сутності .
є HTML "посиланням на сутність символу". У XML не існує іменованої сутності для нерозривного простору, тому ви використовуєте код  
.
У Вікіпедії є список сутностей XML та HTML , і ви можете бачити, що у XML є лише 5 "заздалегідь визначених об'єктів", але HTML має понад 200. Я також вкажу на створення простору (& nbsp;) у XSL, який має відмінні відповіді.
Š
замість  
останньої, яка завжди буде вирішувати Unicode, що не порушує простір.
 
працює дуже добре. Однак він відобразить одного з цих дивних символів в кодуванні ANSI. <xsl:text>
найкраще працював для мене.
<xsl:text> </xsl:text>
Можна також зробити це:
<xsl:text disable-output-escaping="yes"><![CDATA[ ]]></xsl:text>
disable-output-escaping
, чого йому не потрібно, і він був застарілим у XSLT 2.0 і більше в 3.0. У цих версіях ви можете досягти такого ж ефекту при xsl:character-map
гарантованій роботі крос-процесора. Крім того, це розміщує названий об'єкт
у висновку, який не обов'язково є таким самим, як пробіл , який не порушується, і приймальний кінець повинен оголошувати цю сутність (у HTML це зазвичай неявно).
Використовуй це
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
Редагувати: Насамперед слід, мабуть, підтвердити, що це працює спочатку (це і є найбільш загальним рішенням проблеми.)
Ви можете додати визначення цього об’єкту на початку файлу (нижче декларації xml):
<!DOCTYPE stylesheet [
<!ENTITY nbsp " " >
]>
Також ви можете додати більше об'єктів, таких як Ntilde, Aacute тощо.
На додаток до відповіді victor hugo можна отримати всі відомі посилання символів легальні у файлі XSLT, як це:
<!DOCTYPE stylesheet [
<!ENTITY % w3centities-f PUBLIC "-//W3C//ENTITIES Combined Set//EN//XML"
"http://www.w3.org/2003/entities/2007/w3centities-f.ent">
%w3centities-f;
]>
...
<xsl:text>& –</xsl:text>
Існує також певна різниця в результаті такого підходу порівняно з <xsl:text disable-output-escaping="yes">
одним. Останній збирається створювати рядкові літерали, як
для всіх видів випусків, навіть для <xsl:output method="text">
, і це може статися відмінним від того, що ви могли б побажати ... Навпаки, отримання сутностей, визначених для шаблону XSLT <!DOCTYPE ... <!ENTITY ...
, завжди буде виводити вихід, узгоджений з ваші xsl:output
налаштування.
І якщо включати всі посилання символів, може бути розумним використовувати локальну роздільну здатність сутності, щоб двигун XSLT не вибирав з Інтернету визначення сутності символів. Користувачам JAXP або явним Xalan-J може знадобитися патч для Xalan-J, щоб правильно використовувати роздільну здатність. Перегляньте мій блог XSLT, сутності, Java, Xalan ... для завантаження патчів та коментарів.
Якщо ви користуєтесь наступним (без disable-output-escaping
!), Ви отримаєте єдиний нерозривний простір:
<xsl:text> </xsl:text>
disable-output-escaping
для цього
Таблиці стилів XSLT повинні бути добре сформованими XML. Оскільки " "
не є одним із п’яти заздалегідь визначених об'єктів XML , його не можна безпосередньо включити до таблиці стилів. Тому повернення до вашого рішення " "
- це ідеальна заміна, " "
яку ви повинні використовувати.
Приклад:
<xsl:value-of select="$txtFName"/> <xsl:value-of select="$txtLName"/>
Ви також можете використовувати:
<xsl:value-of select="'&nbsp'"/>
запам'ятайте підсилювач після & або ви отримаєте повідомлення про помилку
&nbsp;
(припускаючи, що ви мали на меті крапку з комою), яка буде відображатися як
, а не як `` (nb-пробіл).
Я намагався відобразити межі порожньої комірки в таблиці HTML. Моя стара хитрість використання нерозривного простору в порожніх клітинках не працювала з xslt. Я використовував перерву лінії з тим же ефектом. Я згадую про це лише на випадок, коли ви намагалися використати нерозривний простір, щоб дати деякий вміст "порожній" комірці таблиці, щоб увімкнути межі комірок.
<br/>
Хоча відповідь вже надали @brabster та інші.
Я думаю, що більш багаторазовим рішенням було б:
<xsl:variable name="space"> </xsl:variable>
...
<xsl:value-of select="$space"/>