Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XSLT将XML拆分为多个HTML页面?_Html_Xml_Xslt - Fatal编程技术网

使用XSLT将XML拆分为多个HTML页面?

使用XSLT将XML拆分为多个HTML页面?,html,xml,xslt,Html,Xml,Xslt,我有一个XML文档。我想把这个文件转换成多个HTML文件。当我在内部使用ext:document时,代码不起作用,我做错了什么 XML <root> <page> Page 1 INFO </page> <page> Page 2 INFO <page> Page 3 INFO </page> </page> <page> Page 4 INF

我有一个XML文档。我想把这个文件转换成多个HTML文件。当我在
内部使用
ext:document
时,代码不起作用,我做错了什么

XML

<root>
<page>
    Page 1 INFO
</page>
<page>
    Page 2 INFO 
    <page>
        Page 3 INFO
    </page>
</page>
<page>
    Page 4 INFO
</page>

第1页信息
第2页信息
第3页信息
第4页信息
我的XSLT

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:ext="http://exslt.org/common">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="page">
  <ext:document href="page{position()}.html">
    <html>
        <head></head>
        <body><xsl:value-of select="."/></body>
    </html>
  </ext:document>
 </xsl:template>

 <xsl:template match="root/page/page">
  <ext:document href="pageTwo{position()}.html">
    <html>
        <head></head>
        <body><xsl:value-of select="."/></body>
    </html>
  </ext:document>
 </xsl:template>
</xsl:stylesheet>

page1.html

<html>
  <head></head>
  <body>
    Page 1 INFO
  </body>
</html>
<html>
  <head></head>
  <body>
    Page 2 INFO
  </body>
</html>
<html>
  <head></head>
  <body>
    Page 3 INFO
  </body>
</html>
<html>
  <head></head>
  <body>
    Page 4 INFO
  </body>
</html>

第1页信息
page2.html

<html>
  <head></head>
  <body>
    Page 1 INFO
  </body>
</html>
<html>
  <head></head>
  <body>
    Page 2 INFO
  </body>
</html>
<html>
  <head></head>
  <body>
    Page 3 INFO
  </body>
</html>
<html>
  <head></head>
  <body>
    Page 4 INFO
  </body>
</html>

第2页信息
page3.html

<html>
  <head></head>
  <body>
    Page 1 INFO
  </body>
</html>
<html>
  <head></head>
  <body>
    Page 2 INFO
  </body>
</html>
<html>
  <head></head>
  <body>
    Page 3 INFO
  </body>
</html>
<html>
  <head></head>
  <body>
    Page 4 INFO
  </body>
</html>

第3页信息
page4.html

<html>
  <head></head>
  <body>
    Page 1 INFO
  </body>
</html>
<html>
  <head></head>
  <body>
    Page 2 INFO
  </body>
</html>
<html>
  <head></head>
  <body>
    Page 3 INFO
  </body>
</html>
<html>
  <head></head>
  <body>
    Page 4 INFO
  </body>
</html>

第4页信息

你离得不远

  • 看起来您只想要页面元素的文本,而不是它的所有子元素(即排除页面节点)?因此,您应该在
    值中选择
    /text()
    而不是

  • 您希望为所有页面元素重新应用相同的模板,因此您希望在模板末尾为页面元素应用
    apply template

  • position()并不是您想要的唯一数字。相反,您希望统计所有的前一页和前一页元素

  • 大概是这样的:

    
    
    1。给我们看看你的代码。2.准确地解释当你尝试时会发生什么。“代码不工作”不是一个很好的描述。@michael.hor257k这是我的错误,我刚刚做了一个编辑,您使用哪个XSLT处理器?当您向
    xsl:stylesheet
    元素添加
    扩展元素prefixes=“ext”
    时,代码是否生成多个结果文档?