我正在尝试编写将选择某种类型的直接兄弟的XSLT,但在到达其他标记时停止。使用xslt将平板xml解释为嵌套xhtml
这里的源XML:
<?xml version="1.0"?>
<body>
<proc>Test</proc>
<alert>Test1: alert 1</alert>
<alert>Test1: alert 2</p>
<para>Test para 1</para>
<alert>Test2: alert 1</alert>
<alert>Test2: alert 2</alert>
<alert>Test2: alert 3</alert>
<proc>Test</proc>
<alert>Test3: alert 1</alert>
<alert>Test3: alert 2</alert>
<alert>Test3: alert 3</alert>
</html>
这里是预期的结果:
<?xml version="1.0" encoding="UTF-8"?>
<body>
<proc>
<alert>Test1: alert 1</alert>
<alert>Test1: alert 2</alert>
</proc>
<para>Test para 1</para>
<alert>Test2: alert 1</alert>
<alert>Test2: alert 2</alert>
<alert>Test2: alert 3</alert>
<proc>
<alert>Test3: alert 1</alert>
<alert>Test3: alert 2</alert>
<alert>Test3: alert 3</alert>
</proc>
</body>
是这甚至可能吗?
这是我这是不是做的伎俩当前的xsl:如果您正在使用XSLT 2类似下面应该工作
<xsl:template match="proc">
<xsl:variable name="procedure" select="."/>
<xsl:apply-templates/>
<xsl:for-each
select="following-sibling::alert[preceding-sibling::proc[1] = $procedure]">
<xsl:apply-templates select="."/>
</xsl:for-each>
</xsl:template>
<xsl:template match="c:hhtAlert">...</xsl:template>
<xsl:template match="c:hhtPara">...</xsl:template>
您使用的是XSLT 1还是2? – 2010-09-23 10:26:28
好问题(+1)。请参阅我的答案,了解XSLT 1.0解决方案的高效和简短。 :) – 2010-09-23 13:03:26