首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在XSLT中获得特殊字符后的值

在XSLT中获得特殊字符后的值
EN

Stack Overflow用户
提问于 2021-01-18 20:55:27
回答 1查看 100关注 0票数 0

在用XSLT修改以下XML时,我想寻求帮助。我希望在第一个“\”字符之后获得值,并添加为一个新节点:

示例输入:

代码语言:javascript
复制
<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>

示例输出:

代码语言:javascript
复制
<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>

到目前为止我试过:

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-18 21:45:17

解决办法是:

代码语言:javascript
复制
<?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”是一个特殊的字符,所以必须转义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65781941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档