我想像这样创建一个XSD:
<xs:schema>
<xs:element name="a">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="b" minOccurs="1" maxOccurs="unbounded"/>
<xs:any minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
阐释:
元素内的元素:
我尝试使用choice
,all
等,但我找不到任何解决方案。
来自XmlSpy的错误:
<any...>
使内容模型对<xs:element name="b" ...>
不确定。可能的原因:名称相等,重叠发生 或替代组。
答案 0 :(得分:2)
只要至少有一个a
元素,您的XSD就会有效地说b
可以包含任何子元素序列。
XSD 1.0无法强制执行此类约束,因为任何尝试这样做的操作(包括您提供的操作)都会违反唯一粒子原则。
XSD 1.1可以通过一个简单的断言强制执行这样的约束,声明b
xsd:any
个a
个孩子之间存在<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
vc:minVersion="1.1">
<xs:element name="a">
<xs:complexType>
<xs:sequence>
<xs:any processContents="skip" maxOccurs="unbounded"/>
</xs:sequence>
<xs:assert test="b"/>
</xs:complexType>
</xs:element>
</xs:schema>
。
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_layout, container, false);
getChildFragmentManager().beginTransaction().add(R.id.fragment_container, MyFragment.getInstance() ).commit();
return rootView;
}