【问题标题】:XSLT for a particular XML Format用于特定 XML 格式的 XSLT
【发布时间】:2015-04-23 15:57:16
【问题描述】:

我正在尝试创建 XSL 以更好地显示由我的组织内的流程自动创建的 XML 文档。

我正在尝试渲染它,以便开发人员可以参考其中的信息。 很抱歉,但我是 XSLT 的新手,正在尝试将教程应用到我的场景中。

理想情况下,对于我的第一轮,我试图列出 /DCXT/ATRs/ATR 节点及其属性值。我会从那里进步。

现在我可以使用这个 XLST 和 chrome(通过适当的命令打开以允许本地 xsl 文件)是标题文本和列标题。

我得到了其中没有值的行。

任何帮助将不胜感激。

XML格式如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="ques.xsl"?>

<DCXT attr1="xxx" attr2="yyyy" attr3="zzzz">
    <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>

我的文字XSL如下

<?xml version="1.0"?>

<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>
        <th>attr10</th>
      </tr>
      <xsl:for-each select="/DCXT">
        <tr>
          <td><xsl:value-of select="attr9"/></td>
          <td><xsl:value-of select="attr10"/></td>
        </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

【问题讨论】:

  • 更详细地说明到底哪里出了问题以及您遇到问题的地方将大大改善您的问题,这将(希望)为您的问题提供答案

标签: xml xslt


【解决方案1】:

好吧,你的文字说你要处理/DCXT/ATRs/ATR,所以我将&lt;xsl:for-each select="/DCXT"&gt;更改为&lt;xsl:for-each select="/DCXT/ATRs/ATR"&gt;,然后在里面使用@attribute-name,即更改

     <td><xsl:value-of select="attr9"/></td>
      <td><xsl:value-of select="attr10"/></td>

     <td><xsl:value-of select="@attr9"/></td>
      <td><xsl:value-of select="@attr10"/></td>

【讨论】:

  • 谢谢。问题是我的表中没有任何行。虽然我的选择语句中确实有错误的导航路径,但这是一个错字,因为我之前尝试过。真正的问题是我没有在属性名称前包含“@”。感谢您帮助解决这样一个新手问题。
猜你喜欢
  • 2021-03-20
  • 2019-07-02
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 2011-09-03
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
相关资源
最近更新 更多