每个XSL - 路径

时间:2014-12-24 15:02:47

标签: xml xslt

我有一个XML文件,如下所示

- <alert>
   - <adv_details>
      <type>Primary Type</type> 
      <name>Some Name</name> 
      <id>ID Num</id>
     <adv_details>
     .....
  <alert> 

我的XSL看起来像这样

<fo:flow flow-name="xsl-region-body">
    <xsl:attribute name="font-size"><xsl:value-of select="$font-size"/></xsl:attribute>
    <fo:block>
        <xsl:for-each select="//alert">         
        <xsl:call-template name="alert_details">
            <xsl:with-param name="xmlSection" select="./alert_details"/>
        </xsl:call-template>
      ......

然后我尝试到达节点<adv_details>内的元素的每个值。 首先,我声明此模板名称<xsl:template name="alert_details">,整个代码为

<xsl:template name="alert_details">
<fo:table>
   <fo:table-body>
      <fo:table-row>
        <fo:table-cell>
            <fo:block > 
                <xsl:value-of select="./@type"/>
            </fo:block>
        </fo:table-cell>
        <fo:table-cell>
            <fo:block >
                <xsl:value-of select="./@name"/>
            </fo:block>
        </fo:table-cell>
        <fo:table-cell>
            <fo:block >
                <xsl:value-of select="./id"/>
            </fo:block>
        </fo:table-cell>
      </fo:table-row>
   </fo:table-body>
</fo:table>
</xsl:template>

它没有显示价值! 我认为这是一种正确的方式。首先,我有 - 每次选择=&#34; //警报,然后我有<xsl:with-param name="xmlSection" select="./alert_details"/>,最后,我选择alert_details内的每个节点,但不知何故,这些值不会显示出来。

请帮忙。

1 个答案:

答案 0 :(得分:0)

在模板中,上下文节点(= .表达式)是<alert>元素。 实际上,您需要查询xmlSection参数的类型子元素。 因此,在模板中明确声明参数xmlSection:

<xsl:template name="alert_details">
  <xsl:param name="xmlSection"/>
  ...

并在您的选择中使用它:

<xsl:value-of select="$xmlSection/type"/>