我正在尝试使用Schematron检查属性是否存在。
<Layout>
<Pages>
<Page id="id-001" description="Database Sections">
</Page>
</Pages>
<TreeViews>
<TreeView id="id-001" description="">
</TreeView>
</TreeViews>
如果有“TreeView id”,它必须全部存在于“Page id”
中所以我试着用与“Treeview id”相同的名称来计算“Page id's”,它们必须是&gt; = 1:
<?xml version="1.0" encoding="UTF-8"?>
<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
queryBinding="xslt2">
<sch:pattern name="Vote Count">
<sch:rule context="Layout/TreeViews/Treeview/@name">
<sch:report test="count(Layout/Pages/Page[@id=current()]) >= 1">
min. 1
</sch:report>
</sch:rule>
</sch:pattern>
</sch:schema>
我做错了什么?谢谢你的呐喊!
答案 0 :(得分:3)
这个规则怎么样:
<iso:pattern id="check IDs">
<iso:rule context="TreeView">
<iso:assert test="parent::*/parent::*/Pages/Page/@id = @id">
TreeViews/TreeView/@id = <iso:value-of select="./@id" /> NOT FOUND in Pages
</iso:assert>
</iso:rule>
</iso:pattern>
希望这有帮助。