当包含xmlns和其他类似属性时,XSL解析无法访问子节点

时间:2015-04-24 20:13:54

标签: xml xslt xml-namespaces

感谢该委员会对先前相关职位的帮助。

我确信道歉是关于XML的最基本的问题。我是XML的新手。

如果我从树顶部的DataContext节点中删除所有属性,那么我的XSL可以正常工作。

我将它们添加回节点的那一分钟,我的XSL停止在输出中显示值。

通过一些研究,我看到xmlns实际上是一个保留属性。我做了一些阅读,但仍然不太明白为什么会有这样的结果。

这是我的XSL:     

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
    <h2>My Text XSL</h2>
    <table border="1">
      <tr>
        <th>attr9</th>
      </tr>
      <xsl:for-each select="/DCXT/ATRs/ATR">
        <tr>
          <td><xsl:value-of select="@attr9"/></td>
        </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

这是我的XML,其名称已更改,以保护无辜者。

特定问题出在最顶层的节点,即DCXT节点。

(为方便起见,回车符,实际的xml中不存在          

<DCXT xmlns="http://www.xxxx.c0m" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" contactPerson="xxxx" ourId="xxxx" version="xxxx" dbPrefix="xxx" 
xsi:schemaLocation="http://www.xxx.c0m/a/b/yyyy-dd filename_aa.bb.cc.xsd">

    <Desc>Text description</Desc>
    <dbc>
        <drv>text for drv</drv>
        <prm/>
        <hsNode>text for hsNode</hsNode>
        <ptNode>text for ptNode</ptNode>
        <sName>text for sname</sName>
        <prd/>
    </dbc>
    <DSPs attr4="aaaa" attr5="1" attr3="bbb">
        <dsp attr6="1" attr7="true" attr8="1">
            <Desc>text for desc</Desc>
        </dsp>
        <!--... multiple 'Dsp' nodes defined defined ...-->
    </DSPs>
    <ATRs>
        <ATR attr9="true" attr10="text for attr">
            <FRs>
                <FR attr11="xxx" attr12="text for attr">
                    <MPs>
                        <MP attr13="xxx" attr14="yyyy"/>
                        <!-- .... multiple MP nodes defined -->
                    </MPs>
                </FR>
                <!--... multiple FR nodes defined ...-->
            </FRs>
            <DPY>
                <RDFs>
                    <SOF attr15="xxx" attr16="0"/>
                </RDFs>
                <BFRs>
                    <sof attr17="xxx" attr18="0"/>
                </BFRs>
            </DPY>
        </ATR>
        <!-- multiple ATR nodes defined -->
    </ATRs>
    <!-- more nodes defined at this level but removing for brevity-->
</DCXT>

0 个答案:

没有答案