在XSLT的xsl:param中使用双引号

时间:2019-02-18 18:33:21

标签: xslt

我想在XSLT中使用双引号,但出现错误:

<xsl:param name="unsorted-values" as="xs:string*" 
    select=" 'Test 1','Test 1 with quote 21"' "/>

由于字符串中的双引号,显然它不能像这样工作。我试图像'Test 1 with quote 21\"'一样逃脱,但是没有用。有什么办法可以使用双引号吗?

1 个答案:

答案 0 :(得分:1)

在用双引号分隔的XML属性内,您可以使用实体引用&quot;(或适当的数字字符引用)。

在用单引号分隔的XSLT / XPath 2或3字符串文字中,您可以使用两个单引号,例如''''内加单引号。或者,如果字符串文字定界符是双引号,则可以在例如""""使用带双引号的字符串。

具有各种选项的完整示例是

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="#all"
    version="3.0">

  <xsl:param name="s1" as="xs:string*"
    select="'string with single quote: ''', 
             &quot;string with double quote: &quot;&quot;&quot;,
             'string delimited by single quotes with single quote: '' and double quote: &quot;',
             &quot;string delimited by double quotes with single quote: ' and double quote: &quot;&quot;&quot;"/>

  <xsl:template match="/*">
      <xsl:copy>
          <xsl:value-of select="$s1" separator="&#10;"/>
      </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

输出

<root>string with single quote: '
string with double quote: "
string delimited by single quotes with single quote: ' and double quote: "
string delimited by double quotes with single quote: ' and double quote: "</root>

https://xsltfiddle.liberty-development.net/6r5Gh2U