XML-<xsl:for-each select =“ something / some”>

时间:2018-08-24 20:55:54

标签: xml xslt xslt-2.0

我正在做一个学校项目,我正在为我生产的xml生产一个xsl。 我很怀疑,<xsl:for-each select="something/at/some">做的时候我有回到的任何变化 因为我想在同一个cicle中使用<xsl:value-of select="kapa/alright"/>中的值

想象一个类似XML的

<me>

之后我想要做的事情是这样的:

<something>
  <at>
    <some>
       <kapa>
          <alright>okay</alright>
       </kapa>
    </some>
  </at>
  <me>Hello</me>
</something>

2 个答案:

答案 0 :(得分:1)

正如@ zx485所建议的,您可以使用父轴或祖先轴导航回树。另外,您可以在xsl:for-each外部将变量绑定到me元素,并在内部引用它:

    <xsl:variable name="ME" select="something/me"/>
    <xsl:for-each select="something/at/some">
        <tr>
        <th>
            <xsl:value-of select="kapa/alright"/>
        </th>
        <th>
            <xsl:value-of select="$ME"/>
        </th>
        </tr>
    </xsl:for-each>

答案 1 :(得分:0)

根据实际代码的情况,可以使用此模板。假定模板与根元素匹配,并且something是其子元素。

<xsl:template match="/">
  <table border="1">
    <tr>
        <th>Me:</th>
        <th>you:</th>
    </tr>
    <xsl:for-each select="something/at/some">
        <tr>
        <th>
            <xsl:value-of select="kapa/alright"/>
        </th>
        <th>
            <xsl:value-of select="../../me"/>
        </th>
        </tr>
    </xsl:for-each>
  </table>
</xsl:template>

输出为:

<table border="1">
  <tr>
    <th>Me:</th>
    <th>you:</th>
  </tr>
  <tr>
    <th>okay</th>
    <th>Hello</th>
  </tr>
</table>