xml - 如何将 XML 转换为 XSL

标签 xml xslt

我正在尝试将 xml 文件转换为 xslt

我的xml文件是这样的,

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="testxsl.xsl"?>
<doc>
<test>
    <field name="id">c8b102</field>
    <field name="created_at">2013-11-14T00:00:00Z</field>
    <field name="userid">userfirst</field>
    <field name="screenname">userfirst</field>
    <field name="status">open</field>
    <field name="contents">testing content</field>
    <field name="sentiment">positive</field>
    <field name="location">placename</field>
    <field name="source">local</field>
    <field name="url">test</field>
    <field name="keyword">test</field>
</test>
<test>
    <field name="id">c8b102</field>
    <field name="created_at">2013-11-14T00:00:00Z</field>
    <field name="userid">usersec</field>
    <field name="screenname">usersec</field>
    <field name="status">close</field>
    <field name="contents">test sec</field>
    <field name="sentiment">positive</field>
    <field name="location">place</field>
    <field name="source">local</field>
    <field name="url">test</field>
    <field name="keyword">test</field>
  </test>
  </doc>

我写了一个转换的xsl代码(testxsl.xsl)

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Complaints</h2>
<table border="1">
<tr bgcolor="#9acd32">
  <th>Created Date</th>
  <th>UserID</th>
  <th>Screenname</th>
  <th>Status</th>
  <th>Contents</th>
  <th>Source</th>
  <th>URL</th>
</tr>
<xsl:for-each select="doc/test">
<tr>
  <td>
  <xsl:value-of select="date" />
  </td>
  <td>
  <xsl:value-of select="str[@name = 'userid']" />
  </td>
  <td>
  <xsl:value-of select="str[@name='screenname']" />
  </td>
  <td>
  <xsl:value-of select="str[@name='status']" />
  </td>
  <td>
  <xsl:value-of select="str[@name='contents']" />
  </td>
  <td>
  <xsl:value-of select="str[@name='source']" />
  </td>
  <td>
  <xsl:value-of select="str[@name='url']" />
  </td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

但我在输出中只得到带有边框的标题部分,如下所示,

Created Date  UserID    Screenname  Status  Contents    Source  URL

我不知道是什么问题,我的xsl文件似乎是正确的

最佳答案

在您的输入 XML 中没有名为 date 的元素。同样,test 中的元素不是 str,而是 field

您的 XSLT 代码当然必须与输入 XML 中的元素相对应。

使用以下样式表:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Complaints</h2>
<table border="1">
<tr bgcolor="#9acd32">
  <th>Created Date</th>
  <th>UserID</th>
  <th>Screenname</th>
  <th>Status</th>
  <th>Contents</th>
  <th>Source</th>
  <th>URL</th>
</tr>
<xsl:for-each select="doc/test">
<tr>
  <td>
  <xsl:value-of select="field[@name='created_at']" />
  </td>
  <td>
  <xsl:value-of select="field[@name = 'userid']" />
  </td>
  <td>
  <xsl:value-of select="field[@name='screenname']" />
  </td>
  <td>
  <xsl:value-of select="field[@name='status']" />
  </td>
  <td>
  <xsl:value-of select="field[@name='contents']" />
  </td>
  <td>
  <xsl:value-of select="field[@name='source']" />
  </td>
  <td>
  <xsl:value-of select="field[@name='url']" />
  </td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

输出

<html>
   <body>
      <h2>Complaints</h2>
      <table border="1">
         <tr bgcolor="#9acd32">
            <th>Created Date</th>
            <th>UserID</th>
            <th>Screenname</th>
            <th>Status</th>
            <th>Contents</th>
            <th>Source</th>
            <th>URL</th>
         </tr>
         <tr>
           <td>2013-11-14T00:00:00Z</td>
           <td>userfirst</td>
           <td>userfirst</td>
           <td>open</td>
           <td>testing content</td>
           <td>local</td>
           <td>test</td>
        </tr>
        <!--...-->
      </table>
   </body>
</html>

呈现的 HTML

enter image description here

关于xml - 如何将 XML 转换为 XSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21525306/

相关文章:

Android按钮打开xml布局

xml - Perl XML::LibXML 用法

javax.命名.NameNotFoundException | JNDI 查询

xml - Xpath 有没有更简单的方法来过滤多个 'contain' 条件?

java - 使用 JAXB 编码(marshal)时抑制 XML 节点

java xml 验证 JDK 1.5 JDK 1.6 区别

java - 通过 javax.xml 更改日期格式输出

javascript - 如何从 XML 文件中获取 <img src ="?"> 标签的图像路径

javascript - Google Search Appliance/Mini 可以输出 JSON/JSONP 吗?

xslt - XSL - 如何比较 2 组节点?