我有一个遵循以下方案的XML文件:
<translationData>
<product>
<attributeValue>
<value>1/4"</value>
<value1>1/4"</value1>
<currentValue>aaaa;bbbb</currentValue>
</attributeValue>
</product>
</translationData>
由于“currentValue”中有分号,我需要转义“value”中的分号和双引号。我可以通过将所有文本放在引号中来转义分号,如下所示:
XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="utf-8" />
<xsl:param name="delim" select="';'" />
<xsl:param name="quote" select="'"'" />
<xsl:param name="break" select="'
'" />
<xsl:template match="/">
<xsl:apply-templates select="translationData/product/attributeValue" />
</xsl:template>
<xsl:template match="attributeValue">
<xsl:apply-templates />
<xsl:if test="following::*">
<xsl:value-of select="$break" />
</xsl:if>
</xsl:template>
<xsl:template match="*">
<!-- remove normalize-space() if you want keep white-space at it is -->
<xsl:value-of select="concat($quote, translate(.,'"','\"'), $quote)" />
<xsl:if test="following-sibling::*">
<xsl:value-of select="$delim" />
</xsl:if>
</xsl:template>
<xsl:template match="text()" />
</xsl:stylesheet>
但是输出结果却是:
"1/4\";"1/4\";"aaaa;bbbb"
而不是:
"1/4\"";"1/4\"";"aaaa;bbbb"
我做错了什么?
我对XML和XSLT都很陌生,没有发现有任何问题可以处理这个特定的情况。
XSLT代码来自@Tomalak为另一个问题提供的答案。请参见此处。
R
是从哪里来的? - michael.hor257k