首页 > 解决方案 > XML 模式:如何在任何地方允许一个特定元素,openContent?

问题描述

我有一个xml文件,它基本上是一篇文章的数据。我想写一个xml schema来验证那个文件。在 xml 文章的文件中,我在文本中间使用了一些标签,例如:

<p>The dog is <em>brown</em><p>

em也在其他地方使用该标签,在其他类型的元素中,所以问题不仅仅是允许它在p.

我的问题: 我如何允许它在我的架构的任何元素中使用?我的研究给了我这些主题:

如何允许 XML 元素通过 XSD 出现在任何地方?

XSD:允许来自不同命名空间的元素在序列中的任何位置

我并不真正理解这些答案(我是初学者),但它似乎openContent可能是我正在寻找的解决方案。

最小的工作示例:

<?xml version="1.0"?>
<doc>
    <foo>text <bar /> anything</foo>
    <tag>text <bar /> </tag>
</doc>

架构:

<?xml version="1.0"?>
<xs:schema 
xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="subclass">
        <xs:complexType>
            <xs:sequence>
                 <xs:element name="foo">
                 </xs:element>
                <xs:element name="tag">
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

我的真实文档涉及到一些嵌套的sequenceand choice,而我创建的其他文档会有所不同,所以我正在寻找一个通用的解决方案。

可选问题: 如果解决方案不涉及openContent,有人可以解释一下它是如何工作的吗?与我查找的所有内容不同,搜索结果奇怪地缺乏示例和解释(针对初学者)。

标签: xmlxsd

解决方案


推荐阅读