我們與聲明的XSI命名空間中的Schematron如下Schematron的應用於不同XSI的命名空間
<schema xmlns="http://purl.oclc.org/dsdl/schematron" queryBinding='xslt2'>
<ns prefix="xsi" uri="http://www.w3.org/2001/XMLSchema-instance"/>
我們這樣做,是因爲我們想定義的基於上下文的規則如下:
<rule context="*[@xsi:type='DATA_TYPE']">...</rule>
這些規則對我們迄今收到的過去XML文件工作正常。然而,我們最近收到了其XML命名空間XSI定義爲:
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
這個「新」 XSI命名空間導致上述不被解僱定義的規則(如規則不共享相同的XSI)。有沒有一種方法來定義schematron命名空間,使得規則獨立於xsi命名空間而被觸發?
總是可以根據local-name()=「type」來定義規則,而不是使用xsi:type,但我想知道是否有一個正確的(和更好的)實現方法。
(略OT):在[XSI命名空間被保留(HTTP ://www.w3.org/2001/XMLSchema-instance)。從驗證角度來看,這個「新」xsi命名空間完全不是XSI命名空間,它只是另一個命名空間。另外,你應該不需要用你的模式檢查這個有效性**,quote:_「這增強了這些屬性的特殊狀態,這樣它們不僅不需要被聲明爲允許在實例中使用,而且也不能它也消除了對[例如xsi:type或xsi:nil]進行試驗的任何誘惑,這將會嚴重誤導,因爲它們沒有任何作用。「_ – Abel
可能不是那種偏離主題的,因爲它提供瞭解決方案問題:) – Yampeku