0

我有一些这样的 XML;我想写一个 XSLT。我可以在哪里提取属性 V。并生成这样的树结构。

附言
.
.
....产品分类
. .
. .
. .
. 产品。
.
....金融产品图片
           .
           .
           .产品2。

其他
.
.
........客户位置图片
              .
              .
              . 服务3。

  <PV V="PS:Product Category:Product1" L="" H="" C="327" /> 
  <PV V="PS:Financial Product Images:Product2" L="" H="" C="173" /> 
  <PV V="Other:Customer Location Images:Service2" L="" H="" C="122" /> 
  <PV V="PS:POS Product Images:Product3" L="" H="" C="109" /> 
  <PV V="N/A" L="" H="" C="106" /> 
  <PV V="Other:Customer Location Images:Service 3" L="" H="" C="98" /> 


谁能帮助我我对 XSLT 很陌生

4

1 回答 1

0

你可以使用这个 XSLT

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/wrapper">
        <wrapper2>
            <xsl:apply-templates select="PV[starts-with(@V,'PS')]"/>
            <xsl:apply-templates select="PV[starts-with(@V,'Other')]"/>
        </wrapper2>
    </xsl:template>

    <xsl:template match="//PV">
        <xsl:variable name="elementName1" select="substring-before(./@V,':')"/>
        <xsl:variable name="elementName23" select="substring-after(./@V,':')"/>
        <xsl:variable name="elementName2"
            select="translate(substring-before($elementName23,':'), ' ', '_')"/>
        <xsl:variable name="elementName3"
            select="translate(substring-after($elementName23,':'), ' ', '_')"/>

        <xsl:if test="not($elementName1 = '')">
            <xsl:element name="{$elementName1}">
                <xsl:element name="{$elementName2}">
                    <xsl:element name="{$elementName3}"> </xsl:element>
                </xsl:element>
            </xsl:element>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

标签名称不能有空格,因此您需要用其他字符替换它们。这是通过用“_”替换空格来完成的。

于 2011-07-20T09:26:44.070 回答