【发布时间】:2019-04-02 12:28:00
【问题描述】:
我有一个这样的xml元素,
<p>'data1':'2','data2':'Sports like Cricker, Hokey',</p>
我需要将这些元素分解成多个<p>元素如下,
<p>'data1':'2'</p>
<p>'data2':'Sports like Cricket, Hokey',</p>
我已经编写了以下 XSLT 来完成这项任务,
<xsl:template match="p">
<xsl:variable name="tokens" select="tokenize(., ',')"/>
<xsl:for-each select="$tokens">
<xsl:analyze-string select="." regex="^'(.*)':'(.*)$">
<xsl:matching-substring>
<p>
<xsl:value-of select="."/>
</p>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:for-each>
</xsl:template>
当, 没有出现在文本中间时,此代码可以正常工作。 (例如:“像板球、Hokey 这样的运动”)。但是如果, 出现在文本中,这将像本例一样中断。
我尝试如下使用 tokenize 函数,但似乎 XSLT 中的 tokenize() 函数中不允许使用撇号。
tokenize(., '',')
谁能建议我解决这个问题?
【问题讨论】:
-
你可以使用
xsl:analyze-string来打破这种模式吗?至于在由单引号分隔的 XSLT/XPath 字符串文字中使用单引号',您需要将其加倍,例如''','.