8,906
社区成员
发帖
与我相关
我的任务
分享
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="Dogs">
<xsl:element name="Dogs">
<xsl:apply-templates select="DogGroup" />
</xsl:element>
</xsl:template>
<xsl:template match="DogGroup">
<xsl:element name="Dog">
<xsl:copy-of select="Index" />
<xsl:copy-of select="Dog/Name" />
<xsl:copy-of select="Dog/Weight" />
<xsl:apply-templates select="//Header|//Info" />
</xsl:element>
</xsl:template>
<xsl:template match="Header">
<xsl:copy-of select="Count"/>
<xsl:copy-of select="Code"/>
</xsl:template>
<xsl:template match="Info">
<xsl:copy-of select="Sign"/>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<Dogs>
<Dog>
<Index>1</Index>
<Name>PiaPia</Name>
<Weight>16</Weight>
<Count>6</Count>
<Code>123456</Code>
<Sign>123456789</Sign>
</Dog>
<Dog>
<Index>2</Index>
<Name>Tmd</Name>
<Weight>16</Weight>
<Count>6</Count>
<Code>123456</Code>
<Sign>123456789</Sign>
</Dog>
<Dog>
<Index>3</Index>
<Name>KiaKia</Name>
<Weight>16</Weight>
<Count>6</Count>
<Code>123456</Code>
<Sign>123456789</Sign>
</Dog>
</Dogs>
<xsl:apply-templates select="(name()!='DogGroup')" />
改成:
<xsl:apply-templates select="//Header|//Info" />
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="inner-loop.xslt"?>
<Dogs>
<Header>
<Count>6</Count>
<Code>123456</Code>
</Header>
<Info>
<Sign>123456789</Sign>
</Info>
<DogGroup>
<Index>1</Index>
<Dog>
<Name>PiaPia</Name>
<Weight>16</Weight>
</Dog>
</DogGroup>
<DogGroup>
<Index>2</Index>
<Dog>
<Name>Tmd</Name>
<Weight>16</Weight>
</Dog>
</DogGroup>
<DogGroup>
<Index>3</Index>
<Dog>
<Name>KiaKia</Name>
<Weight>16</Weight>
</Dog>
</DogGroup>
</Dogs>
xslt:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="Dogs">
<xsl:element name="Dogs">
<xsl:apply-templates select="DogGroup" />
</xsl:element>
</xsl:template>
<xsl:template match="DogGroup">
<xsl:element name="Dog">
<xsl:element name="Index">
<xsl:value-of select="Index" />
</xsl:element>
<xsl:element name="Name">
<xsl:value-of select="Dog/Name" />
</xsl:element>
<xsl:element name="Weight">
<xsl:value-of select="Dog/Weight" />
</xsl:element>
<xsl:apply-templates select="(name()!='DogGroup')" />
</xsl:element>
</xsl:template>
<xsl:template match="Header">
<xsl:element name="Count">
<xsl:value-of select="Count" />
</xsl:element>
<xsl:element name="Code">
<xsl:value-of select="Code" />
</xsl:element>
</xsl:template>
<xsl:template match="Info">
<xsl:element name="Sign">
<xsl:value-of select="Sign" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
意思就是要在这三个DogGroup节点里面应用所有除‘DogGroup'节点之外的其他节点的模板(否则会无限循环)
我最终想形成的xml是这样的:
<?xml version="1.0"?>
<Dogs>
<Dog>
<Index>1</Index>
<Name>PiaPia</Name>
<Weight>16</Weight>
<Count>6</Count>
<Code>123456</Code>
<Sign>123456789</Sign>
</Dog>
<Dog>
<Index>2</Index>
<Name>HaHa</Name>
<Weight>16</Weight>
<Count>6</Count>
<Code>123456</Code>
<Sign>123456789</Sign>
</Dog>
<Dog>
<Index>3</Index>
<Name>KiaKia</Name>
<Weight>16</Weight>
<Count>6</Count>
<Code>123456</Code>
<Sign>123456789</Sign>
</Dog>
</Dogs>
求大神路过来看看啊