1

我在 XML 中有一个标签,其中包含一个项目列表,使用多个分隔符,例如:

<List>1;Black;Colour;Smart,2;White;Colour;TV,3;Yellow;Pillow;Home</List>

我需要使用 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() 是最有效的方法,但不知道怎么做。谁能帮我?

4

1 回答 1

2

这是一个示例:

<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>

它首先用逗号标记,然后用分号标记。

于 2013-07-08T12:08:53.977 回答