有没有一种方法,以验证该模板仅包含那些传递给@Param字符?
我认为与XPath函数(FN选项:)但还没有找到一个合适的选择。
这是例如2有效的XML:
<rule type="myRule" template="A-B-CB">
<attribute param="B"/>
<attribute param="A"/>
<attribute param="C"/>
</rule>
<rule type="myRule" template="A(C)-B">
<attribute param="C"/>
<attribute param="A"/>
<attribute param="B"/>
</rule>
和2不是有效的XML:
<rule type="myRule" template="AB-CD">
<attribute param="A"/>
<attribute param="B"/>
<attribute param="C"/>
</rule>
<rule type="myRule" template="AC">
<attribute param="A"/>
<attribute param="B"/>
<attribute param="C"/>
</rule>
也许有想法如何使用schematrone或否则执行?
因此,一套在@template
字母必须是完全一样的一组中./attribute/@param
信吗?
也就是说,distinct-values(string-to-codepoints(replace(@template, '\P{L}', '')))
必须设置为相同的distinct-values(attribute/@param/string-to-codepoints())
。
那么,你如何断定两个序列包含相同的值,下排列?
在XPath 3.1,deep-equal(sort($X), sort($Y))
在XPath 2.0,我也想不出什么更好的比
empty($X[not(.=$Y)]) and empty($Y[not(.=$X)])
我将离开你把这个放在一起。