XSL 3.x技术问题:xsl:value-of指令无法正常输出内容及平面文件解析受阻
解决XSLT 3初始模板输出截断的问题
嘿,我来帮你搞定这个小问题!你遇到的输出截断和功能失效,其实是两个容易忽略的小细节导致的,咱们一步步修复:
1. 修正命令行参数
你当前的命令把样式表同时作为源文档和样式表来处理,但当你用xsl:initial-template时,根本不需要源输入——你只是要直接执行模板生成内容。Saxon提供了-it参数专门用来触发初始模板,不需要指定-s参数。
替换成这个命令:
java -jar ~/Documents/SaxonHE10-5J/saxon-he-10.5.jar -xsl:LinesToXml.xsl -it
2. 修复输出设置的错误
你的xsl:output里的doctype-public="yes"是无效的——这个属性需要的是DTD的公共标识符字符串,而不是布尔值yes。这个错误会导致Saxon在处理输出时出现异常,进而截断内容。
把输出设置改成这样(如果不需要DOCTYPE声明,直接删掉doctype-public属性即可):
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
完整修正后的样式表
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="3"> <xsl:strip-space elements="*"/> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template name="xsl:initial-template" > <root> <xsl:text>
Hello, World! It's </xsl:text> <xsl:value-of select="'simple text that I cannot see.'" /> </root> </xsl:template> </xsl:stylesheet>
测试结果
用修正后的命令运行,你会得到完整的输出:
<?xml version="1.0" encoding="UTF-8"?> <root> Hello, World! It's simple text that I cannot see. </root>
内容的提问来源于stack exchange,提问作者Phil 2
相关产品推荐
相关产品推荐

