2017-03-29 97 views
-1

我已经一个问题应用模板,考虑我的XML会是这样, 输入代码在这里XSLT应用模板调节

<card> 
    <pre/> 
<main>  
    <step1/> 
    <step1/> 
    <panels> 
    <panel/> 
    <panel/> 
    </panels> 
    <step1/> 
<main> 
</card> 

在main所有步骤1将1和增量开始进一步现在当面板来了,它应该把每个面板作为一个步骤,它会开始为3.,4.下一步将是5.

问题是,如果我在mainfunc应用step1的模板,它正在申请所有的step1。所以在面板之后的第1步也将首先出现。我想要为第1步到第3步应用temaplates。然后应用面板,然后应用最后一步.step1计数并不总是相同的,但它们不同。

目前香港专业教育学院这样的事情,

<xsl:template match="mainfunc"> 
    <xsl:apply-templates select="step1"/> 
    <xsl:if test="contains($wcType,'P')"> 
    <xsl:apply-templates select="panels"/> 
    </xsl:if> 
..... 

如何修改序列以应用模板,也编号面板为3

+0

你可以展示你的输出期望在这种情况下,明确“编号”应该如何工作。谢谢! –

+0

编号是好的,对于面板,它将像,步骤\t Abi

+0

我唯一担心的是如何按照步骤的顺序调用模板,然后执行下一步和面板,然后执行步骤 – Abi

回答

0

这是一个有点猜的,因为我不完全清楚你想做的事,但我认为你可以做什么,这是什么...

<xsl:apply-templates select="step1|panels[contains($wcType,'P')]"/> 

|符号是工会运营商和节点WIL联盟l按文件顺序选择。所以,它会选择第一个step1,然后是panels,然后是下一个step1

例如,这个XSLT ...

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="xml" indent="yes" /> 

    <xsl:variable name="wcType" select="'Pie'" /> 

    <xsl:template match="main"> 
     <xsl:apply-templates select="step1|panels[contains($wcType,'P')]"/> 
    </xsl:template> 

    <xsl:template match="step1|panel"> 
     <xsl:copy> 
      <xsl:number count="step1|panel" level="any" /> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

当应用到这个XML ...

<card> 
    <main>  
    <step1/> 
    <step1/> 
    <panels> 
     <panel/> 
     <panel/> 
    </panels> 
    <step1/> 
    </main> 
</card> 

以下是输出

<step1>1</step1> 
<step1>2</step1> 
    <panel>3</panel> 
    <panel>4</panel> 
<step1>5</step1> 
+0

step1模板的编号我已经给出了像,在我给出的面板模板中, ,现在顺序很好,它调用了1. step1 2. step1 1.panel 2.panel 3.step1,现在编号不正确pleaese帮助面板将在面板父标记中,所以我使用了计算面板 – Abi

+0

非常感谢Tim。它帮助了很多! – Abi

+0

如果您需要编号方面的帮助,您应该真正编辑您的问题以显示编号的预期输出,因为代码在评论中很难阅读。谢谢。 –