XML模式:如何在任何地方允许一个特定元素,openContent?

时间:2018-05-22 14:15:40

标签: xml xsd

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

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

我在其他地方的其他类型的元素中使用了em标记,因此问题不仅仅是允许它在p内。

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

How to allow an XML element to appear anywhere via XSD?

XSD: Allow elements from different namespace anywhere in a sequence

我并不真正了解这些答案(我是初学者),但似乎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>

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

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

0 个答案:

没有答案