Xml 将限制设置为“混合”元素

Xml 将限制设置为“混合”元素,xml,xsd,libxml2,Xml,Xsd,Libxml2,您好,我希望能够定义如下内容: <Infos> <Mileage>9987 <UseIn>POS_DISPLAY</UseIn> <UseIn>READER_DISPLAY</UseIn> </Mileage> </Infos> 出于历史原因,我不想费心描述,混合内容的XSD类型允许字符数据出现在任何位置。定义一个允许显示结构的类型很容

您好,我希望能够定义如下内容:

<Infos>
      <Mileage>9987
          <UseIn>POS_DISPLAY</UseIn>
          <UseIn>READER_DISPLAY</UseIn>
      </Mileage>
</Infos>

出于历史原因,我不想费心描述,混合内容的XSD类型允许字符数据出现在任何位置。定义一个允许显示结构的类型很容易,但定义一个允许显示内容的类型却拒绝类似的变体却不那么容易

<Mileage>
    <UseIn>POS_DISPLAY</UseIn>
    9987
    <UseIn>READER_DISPLAY</UseIn>
</Mileage>

位置显示器
9987
读卡器显示

99
位置显示器
8.
读卡器显示
7.

我的建议,fwiw,是退回到第二种设计,这将更好地与大多数XML基础设施一起工作。

出于历史原因,我不想费心描述,具有混合内容的XSD类型允许字符数据出现在任何位置。定义一个允许显示结构的类型很容易,但定义一个允许显示内容的类型却拒绝类似的变体却不那么容易

<Mileage>
    <UseIn>POS_DISPLAY</UseIn>
    9987
    <UseIn>READER_DISPLAY</UseIn>
</Mileage>

位置显示器
9987
读卡器显示

99
位置显示器
8.
读卡器显示
7.

我的建议,fwiw,是退回到第二种设计,这将更好地与大多数XML基础设施配合使用。

如何限制?通过模式?通过DTD?通过放松?张贴显示您的限制的代码。如果您自己定义文档格式,从技术上讲,没有任何东西可以阻止文本节点与元素节点的混合。@DaveJarvis:是的,是XSD架构验证了此格式。我现在在家,但明天我会在这里发布XSD定义。谢谢。你是怎么被限制的?通过模式?通过DTD?通过放松?张贴显示您的限制的代码。如果您自己定义文档格式,从技术上讲,没有任何东西可以阻止文本节点与元素节点的混合。@DaveJarvis:是的,是XSD架构验证了此格式。我现在在家,但明天我会在这里发布XSD定义。谢谢,谢谢。这回答了我的问题,谢谢。这回答了我的问题。
<Mileage>99
    <UseIn>POS_DISPLAY</UseIn>
    8
    <UseIn>READER_DISPLAY</UseIn>
    7
</Mileage>