使用XML时,我经常遇到使用命名空间限定的属性值,例如:
<tag xmlns:foo="http://foo.bar" att1="foo:value" />
我总是想知道XML标准涵盖了多远(或者根本不是)。我尝试过的解析器(Java中的Xerces和Saxon或XMLSpy的本机解析器)仍会报告XML格式,即使您遗漏了属性值中引用的名称空间声明。
所以我的问题是:XML标准(或其扩展)所涵盖的属性值中名称空间的使用是否完全取决于应用程序的业务逻辑来处理它? ...另外,如果它是一个标准,你可以让任何java解析器正确检查属性值中的名称空间前缀是否被正确声明?
答案 0 :(得分:1)
如果属性在模式中声明为xs:QName类型,则模式验证器将检查属性值是否为QName的正确形式,并且已声明前缀。否则,就XML解析器而言,它只是一个普通的属性,任何作为QName的解释和验证都取决于应用程序。