愚蠢且可能简单的 XSL 问题

Silly and Likely Simple XSL Issue

我对这段代码的目标是使用 XSL 来解析平面文件,到目前为止,我读过的大多数建议都涉及使用基于 XSL 3 的模板作为其自己的源。但是,我什至无法使用 xsl:value-of 指令显示基本文本,更不用说访问任何其他功能了。

我知道这可能是一个愚蠢的错误,但请坚持下去。

我正在使用最新的 Saxonica 10.5 HE 运行 sheet 并使用以下命令行选项:

java -jar ~/Documents/SaxonHE10-5J/saxon-he-10.5.jar -s:LinesToXml.xsl -xsl:LinesToXml.xsl

我的源 XSL 是:

<?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" doctype-public="yes"/>
    
    <xsl:template name="xsl:initial-template" >
        <root>
        <xsl:text>&#xA;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"?>
Hello, World! It's 

我想你根本不想用 -s 来提供 XML 源,而是 运行 Saxon 只用 -xsl 选项提供 XSLT 文件和额外的原始 -it 选项开始处理您命名为 xsl:initial-template.

的初始模板

至于命名不同且位于命名空间中的模板(例如 <xsl:template name="ex:main" xmlns:ex="http://example.com/">),如果您需要在命令行中拼写出来,那么 https://www.saxonica.com/html/documentation10/using-xsl/commandline/ 建议使用 -it:{url}localname 例如-it:{http://example.com/}main。如果大括号在您的命令中有意义,您将需要找到一种方法来转义大括号 shell.