将字符串转换为路径表达式 - Schematron

时间:2013-02-08 12:20:08

标签: string casting path schematron

我正在使用schematron,我需要执行以下操作:

有时在我要验证的xml文档中,有这样的元素:

<Var.X name="B">

对于这些元素(name()在中间有一个点)我需要在xml文件中看到是否有一个名为Var的Diretory,其子元素的属性名为= X(在本例中),就像这样:

<Var>
   <Obj name="X">
</Var>

我想过将这些对象的name()转换为表示路径的字符串,所以特别针对这种情况:

Var.X将是/ * / Var / child :: * [@ name =“X”]

有了这个字符串,然后我想检查实际上是否存在属于字符串所代表的路径的元素,但我不能将字符串强制转换为路径类型,我甚至不知道这是否可能。 ..

有更简单的方法吗?

2 个答案:

答案 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)

我意识到我想要实现的是撒克逊人:评估功能......我已经实现了我想要的东西