【发布时间】:2015-10-22 10:12:00
【问题描述】:
我有一个系统可以创建一个具有相同结构的简单文本文件。最初它是一个 HTML 文件,我通过 Lynx 运行以获取文本文件。我想将此文本转换为 XML,以便能够在文本文件中获取 URL。我正在使用的系统可以从 XML 中获取它。
文本文件如下所示:
References
1. url one
2. url two
3. url three
4. url four
我是这里的新手,我还不能在一个帖子中发布四个链接。
我有一个 XSL,当通过 Saxon 运行时,我从文本文件中给出了一个错误,即 prolog 中不允许内容,然后它引用“参考” 此处未显示,但第一行是返回,第二行是“参考”,第三行是再次返回。
这是我正在使用的 XSL。
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs">
<xsl:output method="xml" indent="yes" encoding="utf-8" />
<xsl:variable name="base-uri" select="base-uri(.)"/>
<xsl:variable name="document-uri" select="document-uri(.)"/>
<xsl:variable name="filename" select="(tokenize($document-uri,'/'))[last()]"/>
<xsl:variable name="src">
<doc>
<xsl:for-each select="tokenize(unparsed-text($filename, 'iso-8859-1'), '\r\n')">
<line><xsl:value-of select="."/></line>
</xsl:for-each>
</doc>
</xsl:variable>
<xsl:template match="/">
<xsl:result-document href = "src1.xml">
<xsl:copy-of select="$src"/>
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
谢谢
一月
【问题讨论】:
-
你如何准确地调用 Saxon,你是在传递一个输入文档吗?那是什么样的文件?如果您想处理纯文本,请不要传入输入文档,而是将您的模板命名为
<xsl:template name="main"><xsl:copy-of select="$src1"/></xsl:template>并使用-it:main -o:src1.xml -xsl:sheet.xsl调用 Saxon。 -
您还必须将
<xsl:variable name="filename" select="(tokenize($document-uri,'/'))[last()]"/>更改为<xsl:param name="filename"/>并将该文件名参数传递给 Saxon(或硬编码 (<xsl:param name="filename" select="'myfile.txt'"/>))。 -
感谢您的建议。我在我的系统中找到了另一种方法来解决这个问题。