【问题标题】:text to XML with xslt使用 xslt 将文本转换为 XML
【发布时间】: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,你是在传递一个输入文档吗?那是什么样的文件?如果您想处理纯文本,请不要传入输入文档,而是将您的模板命名为 &lt;xsl:template name="main"&gt;&lt;xsl:copy-of select="$src1"/&gt;&lt;/xsl:template&gt; 并使用 -it:main -o:src1.xml -xsl:sheet.xsl 调用 Saxon。
  • 您还必须将 &lt;xsl:variable name="filename" select="(tokenize($document-uri,'/'))[last()]"/&gt; 更改为 &lt;xsl:param name="filename"/&gt; 并将该文件名参数传递给 Saxon(或硬编码 (&lt;xsl:param name="filename" select="'myfile.txt'"/&gt;))。
  • 感谢您的建议。我在我的系统中找到了另一种方法来解决这个问题。

标签: xml xslt text saxon


【解决方案1】:

消息“Prolog 中不允许内容”表示您已将文件作为输入提供给 XML 解析器,但它无法识别为 XML。在这种情况下,这可能是您的文本文件,我怀疑您将其作为转换的主要输入提供。

当您的主要输入是文本文件时,通常的方法是从命名模板开始处理,例如

<xsl:param name="inputFile"/>
<xsl:template name="main">
  <xsl:variable name="inputFileContent" select="unparsed-text($inputFile)"/>
  ...

然后在没有源文档的情况下调用转换,如果从命令行运行,则使用 -it:main

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    相关资源
    最近更新 更多