在用XSLT修改以下XML时,我想寻求帮助。我希望在第一个“\”字符之后获得值,并添加为一个新节点:
示例输入:
<XML>
<ITEMS>
<PRODUCT>
<NAME>Apple</NAME>
<IMGURL>http://example.com/image2.jpg</IMGURL>
<CATEGORYTEXT>Category1 | Subcategory | Subsubcategory4</CATEGORYTEXT>
</PRODUCT>
<PRODUCT>
<NAME>Melone</NAME>
<IMGURL>http://example.com/image.jpg</IMGURL>
<PRICE>10</PRICE>
<CATEGORYTEXT>Category3 | Subcategory2 | Subsubcategory4</CATEGORYTEXT>
</PRODUCT>
</ITEMS>
</XML>示例输出:
<XML>
<ITEMS>
<PRODUCT>
<NAME>Apple</NAME>
<IMGURL>http://example.com/image2.jpg</IMGURL>
<CATEGORYTEXT>Subcategory</CATEGORYTEXT>
</PRODUCT>
<PRODUCT>
<NAME>Apple</NAME>
<IMGURL>http://example.com/image.jpg</IMGURL>
<PRICE>13</PRICE>
<CATEGORY>Subcategory2</CATEGORY>
</PRODUCT>
</ITEMS>
</XML>到目前为止我试过:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml"/>
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="CATEGORYTEXT">
<xsl:variable name="tokenizedList" select="tokenize(., '|')"/>
<CATEGORY>
<xsl:value-of select="$tokenizedList[1]"/>
</CATEGORY>
</xsl:template>
</xsl:stylesheet>发布于 2021-01-18 21:45:17
解决办法是:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml"/>
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="CATEGORYTEXT">
<xsl:variable name="tokenizedList" select="tokenize(., ' \| ')"/>
<CATEGORY>
<xsl:value-of select="$tokenizedList[2]"/>
</CATEGORY>
</xsl:template>
</xsl:stylesheet>“x”是一个特殊的字符,所以必须转义。
https://stackoverflow.com/questions/65781941
复制相似问题