使用多个分隔符拆分XML数据
我有一个XML标记,其中包含一个项目列表,使用多个分隔符,例如:使用多个分隔符拆分XML数据,xml,parsing,xslt,tokenize,delimiter,Xml,Parsing,Xslt,Tokenize,Delimiter,我有一个XML标记,其中包含一个项目列表,使用多个分隔符,例如: 1;黑色颜色;Smart,2;白色颜色;电视,3;黄色的;枕头;主页 我需要使用XSLT(首选2.0)将值拆分为以下形式: <LIST> <LIST_ITEM id="1" value="Black" type="Colour" usedIn="Smart"/> <LIST_ITEM id="2" value="White" type="Colour" usedIn="TV"/> <
1;黑色颜色;Smart,2;白色颜色;电视,3;黄色的;枕头;主页
我需要使用XSLT(首选2.0)将值拆分为以下形式:
<LIST>
<LIST_ITEM id="1" value="Black" type="Colour" usedIn="Smart"/>
<LIST_ITEM id="2" value="White" type="Colour" usedIn="TV"/>
<LIST_ITEM id="3" value="Yellow" type="Pillow" usedIn="Home"/>
</LIST>
分隔符是:,
用于单独的列表项和代码>用于单独的条目。每个列表项中只有4个值
我猜tokenize()是实现这一点最有效的方法,但不确定如何实现。有人能帮我吗?这是一个示例:
<xsl:stylesheet
version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs">
<xsl:output indent="yes"/>
<xsl:template match="List">
<LIST>
<xsl:for-each select="tokenize(., ',')">
<xsl:variable name="items" select="tokenize(., ';')"/>
<LIST_ITEM id="{$items[1]}" value="{$items[2]}" type="{$items[3]}" usedIn="{$items[4]}"/>
</xsl:for-each>
</LIST>
</xsl:template>
</xsl:stylesheet>
它首先在逗号上标记,在分号上标记。如果我要声明此模板,并从对象中调用它,我该怎么做?如果在XSLT中不调用此类模板,您可以使用xsl:apply templates
将它们推送到XSLT处理器。但是内置的模板为您完成了这项工作,所以上面的代码是完整的。我不知道在XSLT上下文中“从对象中调用它”应该是什么意思。你需要解释一下。好吧,我去掉了模板,它成功了。我还使用了其他属性。谢谢!