exsl:document - 尝试生成输出文件

时间:2014-03-05 23:41:07

标签: xslt output

到目前为止我有这个代码: - 现在用不同的代码更新

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl"
exclude-result-prefixes="exsl"
version="1.0">
  <xsl:output method="xml"/>
  <xsl:variable name="emailPID" select="attr[@tag='00100020']"/>
  <xsl:variable name="emailPName" select="attr[@tag='00100010']"/>
  <!-- overwritten by application with actual values -->
  <xsl:param name="calling" select="'SAMPLE_MOD'"/>
  <xsl:param name="called" select="'SERVER1'"/>
  <xsl:param name="date" select="'20051206'"/>
  <xsl:param name="time" select="'115600.000'"/>
  <xsl:template match="/dataset">
    <exsl:document href="file:///c|/apps/foo.txt">
            <xsl:copy-of select="$emailPID"/>
            <xsl:copy-of select="$emailPName"/>
    </exsl:document>
  </xsl:template>
</xsl:stylesheet>

转换器不会抛出我看到的任何错误,但我看不到我期待的“c:\ apps \ foo.txt”文件。这里有一些格式错误,还是我要留下一些东西?

感谢您寻找

2 个答案:

答案 0 :(得分:0)

The href attribute of an exsl:document needs to be a valid URI。 XSLT引擎可能会将冒号前面的部分(即c)混淆为URI scheme,而不是路径的一部分。

如果您使用文件系统的绝对地址,请包含file: URI scheme

<exsl:document href="file:///c:\apps\foo.txt">

驱动器冒号广告斜线可能会导致非Windows平台出现问题,因此您可以尝试:

<exsl:document href="file:///c|/apps/foo.txt">

答案 1 :(得分:0)

处理器在看到

时会抛出错误
extension-element-prefixes="exslt"

因为前缀“exslt”尚未声明。也许你的意思是“exsl”。目前,“exsl”未声明为扩展名称空间,因此“exsl:document”是一个简单的文字结果元素而不是指令。