xsl:match和xsl:在同一父级中应用

时间:2012-02-15 16:47:56

标签: xslt xpath

我有以下xml结构(它在实际例子中更长,更复杂)

<document>
    <node1>
       <child1/>
       <child2/>
       ...
  </node1>
  <anotherNode />
</document>

我想创建一个像

这样的模板
<xsl:template match="node1" mode="node1">
        <img alt="" src="{child1}" />
        ...
        ...

</xsl:template>

并将此模板应用于其他模板

<xsl:template match="anotherNode">
    <xsl:apply-templates select="node1" mode="node1" />
</xsl:template>

如果node1标签具有易于操作的父标记,但是如果它没有父标识,我无法弄清楚如何匹配和应用模板。

3 个答案:

答案 0 :(得分:2)

使用

<xsl:template match="anotherNode"> 
    <xsl:apply-templates select="/*/node1" mode="node1" /> 
</xsl:template> 

或者

<xsl:template match="anotherNode"> 
    <xsl:apply-templates select="../node1" mode="node1" /> 
</xsl:template> 

答案 1 :(得分:1)

您需要使用parent axis,(abbreviated syntax中的..)。

文档中的所有元素都有父级(请参阅DOM3

答案 2 :(得分:1)

发布的输入是否格式正确(根元素的开始标记中的拼写“docuemnt”?)并且缩进也不清楚,但只要anotherNode元素和{{ 1}}元素是你可以做的兄弟姐妹

node1