请告诉我是否可能,如果可能的话。如何在xsd中声明我的xml中的所有属性都是可选的。我无法声明所有属性,因为我的xml具有不同数量的属性,包括已知和未知。
schema = factory.newSchema(new StreamSource(xsdFileInputStream));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new StringReader(xmlString)));
感谢。
答案 0 :(得分:1)
我找到了解决方案!
<xs:anyAttribute processContents="skip"/>
答案 1 :(得分:0)
如果您可以修改XSD中的每个元素,那么它就像这样简单:
<xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
这是你可以将属性声明为可选的方法:
<xs:attribute name="lang" type="xs:string" use="optional"/>
不确定我是否正确的最终要求,你想自动神奇地做到这一点。 没有全局标志可以实现这一点,但你可以创建这样的脚本:
<xs:sequence>
,请启用修改算法</xs:sequence>
时,请关闭修改算法注意:对String执行此操作,一旦解析完成,它将替换文件的内容。
答案 2 :(得分:0)
XSD 1.1允许你说
<xs:schema defaultAttributes="defaultAttGroup"...
<xs:attributeGroup name="defaultAttGroup">
<xs:anyAttribute processContents="skip"/>
</xs:attributeGroup>
相当于为每个复杂类型添加属性通配符。