到目前为止我有这个代码: - 现在用不同的代码更新
<?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”文件。这里有一些格式错误,还是我要留下一些东西?
感谢您寻找
答案 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”是一个简单的文字结果元素而不是指令。