我能够在Oxygen XML Developer Editor中根据它的XML V 1.1模式验证我的XML配置文件。
如果我的架构违反了断言约束,例如元素的number属性大于特定值,则它不会验证xml配置文件。
<assert test="6 >= @Number" />
然而,当我在java中针对模式解析配置文件时,我的断言被忽略了。
我使用的是Xerces-J 2.11.0-xml-schema-1.1-beta。
我在我的项目中包含以下罐子
cupv10K-runtime.jar
icu4j.jar
xerceslmpl.jar
sml-apis.jar
org.eclipse.wst.xml.xpath2.processor_2.1.1v201204060055.jar
我需要包含另一个罐吗?
关于为什么忽略这些断言的任何建议都会令人难以置信地有所帮助。
非常感谢提前。
干杯,
德鲁
答案 0 :(得分:1)
我使用以下命令行,并且在将测试应用于当前元素的属性时没有遇到任何问题:
$ export XERCESJ=$HOME/xerces-j/xerces-2_11_0-xml-schema-1.1-beta
$ java -classpath $XERCESJ/cupv10k-runtime.jar:/usr/share/java/org.eclipse.wst.xml.xpath2.processor-2.1.100.jar:/usr/share/java/xercesImpl-xsd11-2.12-beta-r1667115.jar:$XERCESJ/xml-apis.jar:$XERCESJ/xercesSamples.jar jaxp.SourceValidator -xsd11 -i my_instance.xml
XSD 1.1语法很好,强制执行测试的条件。