Як я можу вставити
У таблиці стилів 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"/>