我在添加" P"时遇到问题。在下一个模式匹配之前标记。
我得到的来源是:
Firebase authnewuser = new Firebase("https://xxxxx-xxxxx-xxxxx.firebaseio.com");
我想要的是
<root>
<Element>
<P>Value1</P>
<P>
<Level1>
<Level2 type="i">Name1</Level2>, Title1
</Level1>, Text1
<Level1>
<Level2 type="i">Name2</Level2>
</Level1>, Text2.</P>
<P>
<Level1>
<Level2 type="i">Name3</Level2>, Title2
</Level1>, Text3.
</P>
</Element>
以下模板未给出我想要的结果,请帮助
<root>
<Element>
<P>Value1</P>
<P>
<Level1>
<Level2 type="i">Name1</Level2>, Title1
</Level1>, Text1
</P>
<P>
<Level1>
<Level2 type="i">Name2</Level2>
</Level1>, Text2.</P>
<P>
<Level1>
<Level2 type="i">Name3</Level2>, Title2
</Level1>, Text3.
</P>
</Element>
</root>
答案 0 :(得分:0)
我认为您需要在匹配for-each-group
的模板上使用P
,然后才能获得
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:strip-space elements="*"/>
<xsl:output indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="P">
<xsl:for-each-group select="node()" group-starting-with="Level1[Level2]">
<P>
<xsl:apply-templates select="current-group()"/>
</P>
</xsl:for-each-group>
</xsl:template>
</xsl:transform>
在http://xsltransform.net/gVhD8QT给出结果
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Element>
<P>Value1</P>
<P>
<Level1>
<Level2 type="i">Name1</Level2>, Title1
</Level1>, Text1
</P>
<P>
<Level1>
<Level2 type="i">Name2</Level2>
</Level1>, Text2.</P>
<P>
<Level1>
<Level2 type="i">Name3</Level2>, Title2
</Level1>, Text3.
</P>
</Element>
</root>