2015-10-22 79 views
0

我有一个系统可以创建一个具有相同结构的简单文本文件。最初,它是一个HTML文件,我通过Lynx运行以获取文本文件。这个文本我想转换为XML,以便能够在文本文件中选取一个URL。我正在使用的系统可以从XML中获取。text to XML with xslt

文本文件看起来像这样:

References 

    1. url one 
    2. url two 
    3. url three 
    4. url four 

在这里我是新手,我不能发布在后四个环节呢。

我有一个XSL,当通过撒克逊运行给我一个错误,从文本文件内容不允许在序言中,它然后引用“参考” 这里没有显示,但第一行是一个返回,第二行是“参考”,第三行是再次返回。

这是我使用的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> 

感谢

+0

你是怎么称呼撒克逊的,你是否在输入文件?那是什么文件?如果你想处理纯文本,那么不要传入输入文档,而是命名你的模板''并用'-it:main -o:src1.xml -xsl:sheet.xsl'调用Saxon。 –

+0

您还必须将''更改为''并将该文件名的参数传递给Saxon(或者硬编码它(''))。 –

+0

感谢您的建议。我在我的系统中找到了解决这个问题的另一种方法。 –

回答

0

消息“的内容是不是在序言中不允许”指的是你给一个文件作为输入到它不承认XML的XML解析器。在这种情况下,这可能是您的文本文件,我怀疑您是作为转换的主要输入提供的。

当你的主要投入是一个文本文件,通常的做法是,如果从运行在一个命名模板,开始处理,例如

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

,然后调用转换没有源文件,使用-it:main命令行。