多个XSL文件组合

时间:2014-03-20 09:16:49

标签: html xml xslt xslt-1.0

enter image description here您好我有两个xsl文件,我有一个xml如何将这些xsl文件组合在转换类型并将它们组合起来并得到一个html

的index.html

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE xsl:stylesheet [<!ENTITY nbsp "&#xa0;"><!ENTITY bull "&#x2022;">]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="hello.xsl"/>
<xsl:template match="/">
<html>
    <tr>
        <td><xsl:value-of select="name" /></td>
    </tr>
</html>
</xsl:template>
</xsl:stylesheet>

然后我的发送xsl是

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!DOCTYPE xsl:stylesheet [<!ENTITY nbsp "&#xa0;"><!ENTITY bull "&#x2022;">]>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/">
<table>
    <tr>
        <td><xsl:value-of select="age" /></td>
    </tr>
</table>
 </xsl:template>
</xsl:stylesheet>

我的xml是

 <xml>
    <name>abc</name>
    <age>15</age>
</xml>

我想要的输出就像

<html>
    <tr><td>abc</td></tr>
     <table>
        <tr><td>15</td></tr>
     </table>
 </html>

这是可以在xsl中执行的事情我搜索了这么多网站但是找不到答案,请帮助

1 个答案:

答案 0 :(得分:0)

编辑:您编辑了自己的问题,现在正在问一些完全不同的内容。

正如我所说,您可以将模板和来自单独样式表的其他元素与xsl:includexsl:import相结合。请参阅规范here的相关部分。


有多种方法可以合并单独的样式表(例如,通过xsl:includexsl:import),但在您的情况下,我认为它甚至不是必需的。

您的样式表每个只有一个模板,它们只是从输入XML中检索值,这是一个简单的操作。实际上没有必要将这两个模板存储在单独的样式表中。

编写一个样式表,同时生成html元素和表格。

让我强调另一件事:在您的问题中很明显,您并不真正理解XSLT和HTML的工作原理。提供一些提示:

  • 您请求的输出格式错误。 tr元素不能是html的直接子元素。内容必须放在body内,而不是header
  • 您展示的两个模板都匹配/。显然,如果它们匹配相同的节点,将它们组合是没有意义的。

在提出新问题之前,请花点时间研究XSLT和HTML的基础知识。

<强>样式表

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

    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/xml">
        <html>
          <body>
            <table border="solid">
                <tr>
                    <xsl:for-each select="*">
                        <td>
                            <xsl:value-of select="name()"/>
                        </td>
                    </xsl:for-each>
                </tr>
                <tr>
                    <td>
                        <xsl:value-of select="*[1]"/>
                    </td>
                    <td>
                        <xsl:value-of select="*[2]"/>
                    </td>
                </tr>
            </table>
          </body>
        </html>
    </xsl:template>

</xsl:stylesheet>

<强>输出

<html>
  <body>
   <table border="solid">
      <tr>
         <td>name</td>
         <td>age</td>
      </tr>
      <tr>
         <td>abc</td>
         <td>15</td>
      </tr>
   </table>
  </body>
</html>