gpt4 book ai didi

xml - 使用 XSLT 解析文本文件

转载 作者:数据小太阳 更新时间:2023-10-29 01:46:49 25 4
gpt4 key购买 nike

我有一个结构如下的纯文本文件:

!ITEM_NAME
Item value
!ANOTHER_ITEM
Its value
...

是否可以使用 XSLT 获得类似于以下内容的文件:

<?xml version="1.0" encoding="UTF-8" ?>
<document>
<ITEM_NAME>Item value</ITEM_NAME>
<ANOTHER_ITEM>Its value</ANOTHER_ITEM>
...
</document>

编辑

对不起,我之前没有说清楚。我正在尝试使用 Visual Studio 2005 XSLT 引擎完成此转换。我已经尝试了提供的两种解决方案,我确信它们是正确的。但是 Visual Studio 2005 不知道未解析文本函数。

最佳答案

如果可以使用 XSLT 2.0,则可以使用 unparsed-text()...

文本文件(不要将文本文件用作 XSLT 的直接输入。)

!ITEM_NAME
Item value
!ANOTHER_ITEM
Its value
!TEST_BANG
Here's a value with !bangs!!!

XSLT 2.0(将此 XSLT 应用于自身(使用样式表作为 XML 输入)。您还必须更改文本文件的路径。您可能还必须更改编码.)

<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 indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:param name="text-encoding" as="xs:string" select="'iso-8859-1'"/>
<xsl:param name="text-uri" as="xs:string" select="'file:///C:/Users/dhaley/Desktop/test.txt'"/>

<xsl:template name="text2xml">
<xsl:variable name="text" select="unparsed-text($text-uri, $text-encoding)"/>
<xsl:analyze-string select="$text" regex="!(.*)\n(.*)">
<xsl:matching-substring>
<xsl:element name="{normalize-space(regex-group(1))}">
<xsl:value-of select="normalize-space(regex-group(2))"/>
</xsl:element>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:template>

<xsl:template match="/">
<document>
<xsl:choose>
<xsl:when test="unparsed-text-available($text-uri, $text-encoding)">
<xsl:call-template name="text2xml"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="error">
<xsl:text>Error reading "</xsl:text>
<xsl:value-of select="$text-uri"/>
<xsl:text>" (encoding "</xsl:text>
<xsl:value-of select="$text-encoding"/>
<xsl:text>").</xsl:text>
</xsl:variable>
<xsl:message><xsl:value-of select="$error"/></xsl:message>
<xsl:value-of select="$error"/>
</xsl:otherwise>
</xsl:choose>
</document>
</xsl:template>
</xsl:stylesheet>

XML 输出

<document>
<ITEM_NAME>Item value</ITEM_NAME>
<ANOTHER_ITEM>Its value</ANOTHER_ITEM>
<TEST_BANG>Here's a value with !bangs!!!</TEST_BANG>
</document>

关于xml - 使用 XSLT 解析文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15974377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com