人
我正在使用schematron,我需要执行以下操作:
有时在我要验证的xml文档中,有这样的元素:
<Var.X name="B">
对于这些元素(name()在中间有一个点)我需要在xml文件中看到是否有一个名为Var的Diretory,其子元素的属性名为= X(在本例中),就像这样:
<Var>
<Obj name="X">
</Var>
我想过将这些对象的name()转换为表示路径的字符串,所以特别针对这种情况:
Var.X将是/ * / Var / child :: * [@ name =“X”]
有了这个字符串,然后我想检查实际上是否存在属于字符串所代表的路径的元素,但我不能将字符串强制转换为路径类型,我甚至不知道这是否可能。 ..
有更简单的方法吗?
答案 0 :(得分:1)
您也可以在没有撒克逊扩展名的情况下使用名称功能!
<rule context="*[matches(name(),'\w\.\w')]">
<let name="beforePoint" value="substring-before(name(),'.')"/>
<let name="afterPoint" value="substring-after(name(),'.')"/>
<assert test="/*/*[name() = $beforePoint]/*[@name=$afterPoint]">error message</assert>
</rule>
答案 1 :(得分:0)
我意识到我想要实现的是撒克逊人:评估功能......我已经实现了我想要的东西