2009-11-10 5 views
2

Я пишу XSL-преобразование в Visual Studio. Он сообщает, что точка с запятой в следующем является «неожиданным маркером»:Как избежать точки с запятой в xsl: param?

<xsl:param name="delimiters" select=";#" /> 

Кто-нибудь знает, как избежать точка с запятой? Он пока не отображается ни в каких символьных списках, которые я нашел до сих пор.

ответ

4

Вы хотите по-видимому парам иметь строку;#, как это значение, учитывая, что это не является допустимым выражением XPath? Если это так, вам нужно указать значение атрибута:

<xsl:param name="delimiters" select="';#'" /> 

Обратите внимание, что значение теперь завернуто в одинарные кавычки; это заставляет значение атрибута интерпретироваться как выражение XPath, которое возвращает строку.

+1

Это также возможная альтернатива '; #'. Иногда это бывает более ясным в некоторых редакторах, которые объединяют вместе цитату и апостроф вместе. –

+1

В этом случае значение переменной на самом деле представляет собой фрагмент дерева результатов, содержащий только один текстовый узел, а не строку. Конечно, в большинстве случаев это не имеет никакого значения, но это стоит отметить. http://www.w3.org/TR/1999/REC-xslt-19991116#section-Result-Tree-Fragments – NickFitz

+0

@NickFitz: Спасибо, я этого не знал. Теперь, когда вы это говорите, это абсолютно логично. :) – Tomalak

1

Попробуйте следующий объект (точка с запятой является ASCII символ 59) ...

&#59; 
4

Вы пробовали это?

<xsl:param name="delimiters" select="';#'"/> 
+0

+1 Распространенная ошибка и часто сложнее определить, чем эта. – Ishmael

0

wallenborn is right. Причина в том, что атрибут select в XSL всегда ожидает выражения XPath. Если вы хотите разместить строковый литерал, вам нужно процитировать его.

Смежные вопросы