Избегайте одинарных кавычек в функции xslt concat - PullRequest
47 голосов
/ 22 мая 2010

Я хочу вывести одинарную кавычку вокруг переменной $ ID в приведенном ниже xsl: value-of xsl statment.

<xsl:value-of select="concat('process[@Ref=',$ID,']')"></xsl:value-of>

в настоящее время печатается

process@Ref=87799989

Пожалуйста, дайте мне знать, как мне этого достичь.

Заранее спасибо, Кешав

Ответы [ 5 ]

41 голосов
/ 22 мая 2010

В XPath 1.0 :

Вы можете использовать встроенные сущности &apos; и &quot;

В XSLT 1.0 :

Кроме того, вы можете определить переменные $Q и $APOS (поместить содержимое (буквальный "или буквальный" символ) в тело xsl:variable, а не в атрибут * select).

В XPath 2.x (это также означает XSLT 2.x и XQuery 1.x)

Просто избегайте апострофа, вводя два соседних апострофа, избегайте кавычки, вводя две соседние кавычки, в соответствии с определением языка XPath 2.0

35 голосов
/ 16 июня 2011

Чтобы расширить ответ Димитре, вы можете использовать это решение в XSLT:

<xsl:variable name="apos">'</xsl:variable>
<xsl:value-of select="concat('process[@Ref=',$apos,$ID,$apos,']')"></xsl:value-of>
29 голосов
/ 22 мая 2010

Используйте &apos;?

<xsl:value-of select="concat('process[@Ref=&apos;',$ID,'&apos;]')"></xsl:value-of>

Редактировать: См. Ответ Димитра для лучшего решения.

4 голосов
/ 07 декабря 2010
<xsl:value-of
select="concat('process[@Ref=&apos;',$ID,'&apos;]')"></xsl:value-of>

это не работает для меня. Мое решение:

<xsl:value-of select="concat(&quot;process[@Ref='&quot;,$oidConstant,&quot;'&quot;)"></xsl:value-of>
0 голосов
/ 07 марта 2014

Простой пример будет

      <xsl:variable name="varTitle" select="title" />
<xsl:variable name="APOS">'</xsl:variable>
<xsl:value-of select="translate($varTitle, 'any text', $APOS)"/>

Это заменит «любой текст» на «в моем заголовке».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...