gpt4 book ai didi

xslt - 使用 XSLT 进行空前缀转换的 XML

转载 作者:行者123 更新时间:2023-12-04 17:00:56 34 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





XSLT Transform doesn't work until I remove root node

(2 个回答)


5 个月前关闭。




我愿意用XSLT通过删除 ( TextLine ) 元素将 XML 文件转换为其他 XML 文件。但是,在输出 XML 文件中,这些元素并没有像我期望的那样被删除。我想我必须修改 XSLT 文件,但我不知道如何修改。让我知道应该怎么做。
我怀疑问题的根本原因是 XML 文件中的元素有一个空的前缀命名空间。
详细内容如下。
一个 XML test-01.xml包含空前缀命名空间元素的文件:

<?xml version="1.0" encoding="UTF-8"?>
<alto xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.loc.gov/standards/alto/ns-v4#"
xsi:schemaLocation="http://www.loc.gov/standards/alto/ns-v4# http://www.loc.gov/standards/alto/v4/alto-4-2.xsd">
<TextLine TAGREFS="LT9"/>
<TextLine TAGREFS="LT10"/>
<TextLine TAGREFS="LT9"/>
<TextLine TAGREFS="LT8"/>
</alto>
我正在使用以下 date.xslt文件:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="TextLine"/>

</xsl:stylesheet>
注意:我正在使用 python lxml来执行转换。但是,这应该不会对流程产生任何影响,因为我可以使用任何其他 XML 转换器作为 xsltproc .

最佳答案

是的。您认为默认 namespace 是 XSLT 无法按预期运行的原因的假设是正确的。试试这个 XSLT-1.0:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:loc="http://www.loc.gov/standards/alto/ns-v4#">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="loc:TextLine"/>

</xsl:stylesheet>

关于xslt - 使用 XSLT 进行空前缀转换的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68315396/

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