使用 XSLT 进行空前缀转换的 XML [重复]

     2023-02-16     33

关键词:

【中文标题】使用 XSLT 进行空前缀转换的 XML [重复]【英文标题】:XML with empty prefix transformation with XSLT [duplicate] 【发布时间】:2021-09-19 17:35:27 【问题描述】:

我愿意使用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

【问题讨论】:

【参考方案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>

【讨论】:

如何将前缀类型添加到重复父节点并使用 XSLT 选择每个元素的所有元素?

】如何将前缀类型添加到重复父节点并使用XSLT选择每个元素的所有元素?【英文标题】:HowtoaddprefixedtypeintorepeatingparentnodeandselectallelementsforeachusingXSLT?【发布时间】:2013-05-0122:38:55【问题描述】:我想知道我们如何将前缀类型[xs... 查看详情

XSLT:添加了前缀和命名空间

...tadded【发布时间】:2012-08-1003:45:16【问题描述】:我正在使用XSLT从一种XML转换为另一种XML。通过应用论坛中给出的答案,我能够满足我对所需输出的所有要求,但唯一的问题是在输出中,一个额外的前缀ns0会在两个地方自动添... 查看详情

javescript中使用xslt转换xml文档

...在XML中,在展示的时候需要转换为其它的形式,这里介绍使用XSLT对XML数据进行转换。要学习XSLT对XML的转换,需要先了解三个文件。第一个是存储数据的XML文件:employees.xml<?xmlversion="1.0"?><employees><employeetitle="SoftwareEnginee... 查看详情

使用 XSLT 进行属性转换

】使用XSLT进行属性转换【英文标题】:AttributetransformationusingXSLT【发布时间】:2013-08-1502:50:20【问题描述】:我正在创建XSLT转换。我的源XML包含具有InstrumentType属性的元素Order:<OrderInstrumentType="FWD">现在,作为转换过程的一... 查看详情

将 xml 中的节点与 xslt 进行比较

】将xml中的节点与xslt进行比较【英文标题】:comparingnodesinxmlwithxslt【发布时间】:2012-08-2115:52:02【问题描述】:我正在xslt的帮助下将xml数据转换为html页面。我想通过以下方式消除出现这样的重复数据。xml数据<calendar><even... 查看详情

如何使用 xslt 更改 xml 中的命名空间

】如何使用xslt更改xml中的命名空间【英文标题】:Howtochangethenamespaceinxmlusingxslt【发布时间】:2018-02-0806:39:50【问题描述】:我需要将xml中的所有属性转换为具有某些条件的元素。例如,某些属性应该以“值”为前缀。我做到了... 查看详情

在 Java 中通过 XSLT 进行 XML 粉碎

】在Java中通过XSLT进行XML粉碎【英文标题】:XMLshreddingviaXSLTinJava【发布时间】:2012-01-2219:41:03【问题描述】:我需要转换具有表单嵌套(分层)结构的大型XML文件<Root>FlatXMLHierarchicalXML(multipleblocks,somerepetitive)FlatXML</Root>... 查看详情

需要 XSLT 转换以删除重复元素 - 按属性排序

...-1920:00:06【问题描述】:我有一段糟糕的XML需要通过BizTalk进行处理,并且我已设法将其规范化为下面的示例。我不是XSLT忍者,但在web和VS2010调试器之间,我可以找到绕过XSL的方法。我现在需要一点XSLT 查看详情

XSLT 转换路径中的非法字符 [重复]

】XSLT转换路径中的非法字符[重复]【英文标题】:IllegalCharactersinPathforXSLTTranformation[duplicate]【发布时间】:2020-01-2800:39:32【问题描述】:我正在编写XSLT转换来翻译XML信用报告。当我运行以下代码时,我收到“路径中的非法字符... 查看详情

XSLT 匹配和命名空间 [重复]

...【发布时间】:2018-03-1017:26:55【问题描述】:我正在尝试使用XSLT转换XML。如果我从XSLT和XML中删除命名空间信息,它可以正常工作,但我无法让它与适当的命名空间信息一起工作。下面是失败的XSLT的样子:<?xmlversion="1.0"encoding=... 查看详情

XML 文件中的 XML 模式声明破坏了 XSLT 转换 [重复]

】XML文件中的XML模式声明破坏了XSLT转换[重复]【英文标题】:XMLschemadeclarationsinXMLfilebreaksXSLTtransformation[duplicate]【发布时间】:2020-08-2704:27:43【问题描述】:我有一个XSD、XML和XSLT文件。(简化)XML:<projectxmlns="SYSTEM"xmlns:xsi="htt... 查看详情

xslt 中的 XML 命名空间处理

...inxslt【发布时间】:2013-04-1102:36:35【问题描述】:我需要使用xslt将一种xml格式转换为另一种xml。最初我尝试不使用命名空间并得到它。但是当我尝试使用命名空间xmlns="http://ws.wso2.org/dataservice"时,它在给定的xml文件中没有前缀作... 查看详情

动态添加 XML 标记,并且不应该允许基于使用 XSLT 的 xml 中特定标记的计数重复

】动态添加XML标记,并且不应该允许基于使用XSLT的xml中特定标记的计数重复【英文标题】:AddingXMLtagsdynamicallyandshouldnotallowduplicatesbasedoncountofparticulartagsinxmlusingXSLT【发布时间】:2021-10-3018:17:56【问题描述】:我很难根据一个xml... 查看详情

XSLT 3.0 - 在 XSLT 3.0 xml-to-json() 中出现错误“重复键值”

...【发布时间】:2021-10-1713:51:34【问题描述】:我正在尝试使用XSLT3.0将给定的json数据从一种形式转换为另一种形式。我正在使用XSLT3.0提供的json-to-xml和xml- 查看详情

使用 XSLT 删除重复标记及其在 XML 中的子项

】使用XSLT删除重复标记及其在XML中的子项【英文标题】:RemoveDuplicatedTagandit\'schildsinXMLusingXSLT【发布时间】:2020-11-2209:31:29【问题描述】:所以,我想从我的xml中删除所有重复的标签及其子标签(如果存在)。这个例子来自这里... 查看详情

使用 XSLT 删除 XML 消息中的空元素字段和默认值

】使用XSLT删除XML消息中的空元素字段和默认值【英文标题】:RemoveEmptyElementsfieldandDefaultvalueinXMLmessageusingXSLT【发布时间】:2012-01-0217:48:15【问题描述】:要求的详细说明是,在Request消息中有一个名为IgnoreEmptyElementInd的字段,它... 查看详情

XSLT - 删除前缀命名空间特定节点 XML

】XSLT-删除前缀命名空间特定节点XML【英文标题】:XSLT-DeleteprefixnamespacespecificnodeXML【发布时间】:2016-11-1412:58:23【问题描述】:这是我的带有SOAP标头和正文的XML:<s:Envelopexmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body>&l... 查看详情

在 MarkLogic 中使用 XSLT/XQUERY 进行转换?

】在MarkLogic中使用XSLT/XQUERY进行转换?【英文标题】:transformationsusingXSLT/XQUERYinMarkLogic?【发布时间】:2015-06-2209:29:03【问题描述】:示例XML:let$xml:=document<doc><p>sample</p><categories><category>comdey</cate 查看详情