XML XSLT结果文档fseek

XML XSLT结果文档fseek,xslt,document,fseek,Xslt,Document,Fseek,使用XSLT转换,我想将一个XML文件(它依次表示另一个文件的各个块)转换为一个HTML文件,该文件带有指向所表示文件的链接 输入XML文件: <File> <Name>foo.jpg<Name> <Chunk> <Offset>200</Offset> <Length>100</Length> <Data> <![CD

使用XSLT转换,我想将一个XML文件(它依次表示另一个文件的各个块)转换为一个HTML文件,该文件带有指向所表示文件的链接

输入XML文件:

<File>
  <Name>foo.jpg<Name>
  <Chunk>
      <Offset>200</Offset>
      <Length>100</Length>
      <Data>
          <![CDATA[data bytes, encoded in base64, can be greater than length 100 too, but first 100 decoded bytes are valid.]]>
      </Data>
  </Chunk>
  <Chunk>
  ...
</File>

foo.jpg
200
100
...
输出应该是一个html文件,该文件具有到foo.jpg的有效链接,也就是说,有另一个名为“foo.jpg”的隐式输出文件,其中包含块中cdata部分的数据,位于其指定的偏移量处

<html>
   <body>
      <a href="http://example.com/images/foo.jpg">file</a>
   </body>
</html>


此XSLT 2.0转换:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/*">

  <xsl:document>
        <html>
           <body>
              <a href="http://example.com/images/{Name}">file</a>
           </body>
        </html>
  </xsl:document>

  <xsl:result-document href="file:///c:/temp/delete/{Name}" method="text">
    <xsl:apply-templates select="Chunk">
     <xsl:sort select="Offset" data-type="number"/>
    </xsl:apply-templates>
  </xsl:result-document>
 </xsl:template>

 <xsl:template match="Chunk">
  <xsl:value-of select="substring(Data, 1, Length)"/>
 </xsl:template>
</xsl:stylesheet>
<html>
   <body><a href="http://example.com/images/foo.jpg">file</a></body>
</html>

此XSLT 2.0转换

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/*">

  <xsl:document>
        <html>
           <body>
              <a href="http://example.com/images/{Name}">file</a>
           </body>
        </html>
  </xsl:document>

  <xsl:result-document href="file:///c:/temp/delete/{Name}" method="text">
    <xsl:apply-templates select="Chunk">
     <xsl:sort select="Offset" data-type="number"/>
    </xsl:apply-templates>
  </xsl:result-document>
 </xsl:template>

 <xsl:template match="Chunk">
  <xsl:value-of select="substring(Data, 1, Length)"/>
 </xsl:template>
</xsl:stylesheet>
<html>
   <body><a href="http://example.com/images/foo.jpg">file</a></body>
</html>