xsd 架构:如何在 XML 实例文档中省略命名空间前缀

xsd schema: How to omit namespace prefix in XML instance document

提问人:SebastianWilke 提问时间:10/24/2023 更新时间:10/24/2023 访问量:44

问:

我有这个XML模式:

<schema xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:r="urn:rt"
        targetNamespace="urn:rt">

    <element name="RTC">
        <complexType>
            <sequence>
                <element name="Nodes"/>
                <element name="Edges"/>
                ...
            </sequence>
        </complexType>
    </element>
    ...
</schema>

和以下 XML 实例文档:

<?xml version="1.0" encoding="UTF-8"?>
<catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="urn:rt rt.xsd"
         xmlns:r="urn:rt">

    <r:RTC>
        <Nodes/>
        <Edges/>
        ...
    </r:RTC>
    ...
</catalog>

我想为现有的 XML 文件生成一个 XML 架构。这些文件没有最顶层元素的此前缀(即最顶层的元素只是 .r:<RTC>...</RTC>)

有没有办法省略实例文档中的前缀?r:

XML xsd xml-namespaces 前缀

评论

0赞 Martin Honnen 10/24/2023
我认为,使用来自不同命名空间的元素(其中一些没有命名空间,而另一些则在某个命名空间中)需要编写两个模式模块,每个目标命名空间一个,并将第二个模式导入到第一个模式中,以引用第二个(目标)命名空间的模式中的元素或类型。
0赞 Michael Kay 10/24/2023
您似乎在问两个不同的问题:(a) 如何生成与现有实例文档匹配的架构,以及 (b) 如何生成与现有架构匹配的实例文档。你想要哪个?
0赞 SebastianWilke 10/24/2023
@MichaelKay我不是在问如何生成两者都不是。提供的实例文档符合架构,我知道如何验证这一点。我问是否有办法不为实例文档中的元素设置此命名空间前缀(可能通过修改 or 元素的属性)并且仍然使它们匹配。r:<schema><catalog>
0赞 Michael Kay 10/24/2023
提供的实例不符合提供的架构。

答: 暂无答案