Xml 没有元素的xs:mixed的含义是什么?

Xml 没有元素的xs:mixed的含义是什么?,xml,xsd,mixed,Xml,Xsd,Mixed,我从一位客户那里得到了以下XSD位。它是跨越数十个文件的遗留模式的一部分 <xs:element name="stateProvinceName"> <xs:complexType mixed="true"> <xs:attributeGroup ref="xml:attlist.global-attributes"/> </xs:complexType> </xs:element> 我在想他们到底想要什么。没有子

我从一位客户那里得到了以下XSD位。它是跨越数十个文件的遗留模式的一部分

<xs:element name="stateProvinceName">
  <xs:complexType mixed="true">
    <xs:attributeGroup ref="xml:attlist.global-attributes"/>
  </xs:complexType>
</xs:element>

我在想他们到底想要什么。没有子元素,那么这个“xs:mixed”是什么意思呢?它应该是简单内容,还是没有内容

我告诉他们应该使用更多的标准结构,例如

<xs:element name="stateProvinceName">
  <xs:complexType>
    <xs:simpleContent>
       <xs:extension base="xs:string">
         <xs:attributeGroup ref="xml:attlist.global-attributes"/>
       </xs:extension>
     </xs:simpleContent>
  </xs:complexType>
</xs:element>

但他们不确定这是否意味着同样的事情。两种模式都接受

<stateProvinceName ID="345643">California</stateProvinceName>
加州 及



混合
与空内容模型一起使用是完全标准的。如果您不喜欢他们的内容模型,则需要另一个参数

通常,
mixed=“true”
意味着在给定复杂类型的子元素中允许字符内容;在这种情况下,由于内容模型中没有子元素,因此父元素的唯一合法内容将是字符数据、注释和处理指令。结果是,元素声明接受的元素集与使用复杂类型键入的元素集相同,该类型的简单内容声明为扩展名
xs:string


混合内容和字符串之间的选择是一个设计决策。一般来说,混合内容更适合自然语言散文,即使元素的初始设计没有预见到子元素的需要。一般来说,
xs:string
更容易用作限制期望值集的基础。(如果您想限制
stateProvinceName
仅接受特定邮政服务定义的代码,
xs:string
比混合内容更适合您的工作。)

这两种类型表面上可能是等效的,但它们的扩展性不同。使用简单的内容类型xs:string可以通过约束字符串(例如使用正则表达式)来细化类型,使用没有元素的混合复杂内容类型时,可以通过向模型中添加元素来进行细化。

这意味着您有一个名为
stateProvinceName
的元素,该元素具有一个或多个属性(由
xml:attlist.global attributes
定义),其内容为字符串。实际上,它与您推荐的结构没有什么不同


然而,它们的潜在区别在于可扩展性。

一个混合的复杂类型元素可以包含属性、元素和文本。
您可以发布一些XML示例吗?可能的重复与喜欢它们的模型无关。这是关于建议一个解决方法,直到我修复这个bug,这可能需要一段时间(如果他们需要等待下一个版本,则需要更长时间)抱歉,您已经失去了我。你问的问题是宣言是什么意思。这个问题没有提到一个bug,也没有明确指出要解决什么问题。抱歉,如果“如果你不喜欢他们的模特”这句话把你弄糊涂了;这是我试图解释在原始帖子中提出的观点,即带有空内容模型的混合内容在某种程度上不如
xs:string
标准。不是。祝你好运修复了这个bug,不管它是什么。“当使用没有元素的混合复杂内容类型时,可以通过向模型添加元素来进行细化”这意味着什么?你能举个例子吗?谢谢
<stateProvinceName ID="345643"/>