Java 如何在processContents=lax中指定外部架构
我有一个通用模式,它定义了如下部分:Java 如何在processContents=lax中指定外部架构,java,xml,xsd,xmlbeans,Java,Xml,Xsd,Xmlbeans,我有一个通用模式,它定义了如下部分: <xs:element name="detail"> <xs:annotation> <xs:documentation> </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs
<xs:element name="detail">
<xs:annotation>
<xs:documentation>
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute processContents="skip"/>
</xs:complexType>
</xs:element>
<detail>
<drawing>
<name="test"/>
</drawing>
</detail>
一天中的大部分时间我都在阅读这些内容,但似乎仍然不知道如何深入到实际xml文档中detail元素下的字段
我知道它可能是这样的:
<xs:element name="detail">
<xs:annotation>
<xs:documentation>
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute processContents="skip"/>
</xs:complexType>
</xs:element>
<detail>
<drawing>
<name="test"/>
</drawing>
</detail>
或
xmlbeans没有办法知道details元素中的内容,因为它是一个通配符,所以它没有提供一种深入研究这些元素的方法。xmlbeans站点表示我修改了我在其中阅读的文档,以将通配符元素提升到一个级别,但这似乎不是一成不变的。
我还可以修改模式,对特定代码中可能存在的元素进行元素引用。对此有何想法 由于detail元素可以包含任何有效的XML,因此您只能使用某种访问内容的通用方式(XPath、DOM遍历或类似方式),或者专门尝试将每个子元素与特定的模式相匹配(最好使用唯一的名称空间)。然后,可以将与已知模式匹配的子项输入到您最喜欢的库中,该库用XML生成对象 正如您所说,另一个选项可以是指定模式中的每个有效子类型(出于可扩展性的目的,可以选择在底部使用通配符)