提问人:mathcounterexamples.net 提问时间:7/9/2021 更新时间:7/9/2021 访问量:45
使用 XSLT [duplicate] 进行空前缀转换的 XML
XML with empty prefix transformation with XSLT [duplicate]
问:
我愿意通过删除()元素将XML文件转换为其他XML文件。但是,这些元素并没有像我在输出 XML 文件中预期的那样被删除。我想我必须修改 XSLT 文件,但我不知道如何修改。让我知道应该怎么做。XSLT
TextLine
我怀疑问题的根本原因是 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
。
答:
1赞
zx485
7/9/2021
#1
是的。您认为默认命名空间是 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>
评论