【发布时间】:2019-08-23 08:41:45
【问题描述】:
我可以正确验证这个 XML 文件
<?xml version='1.0' encoding='UTF-8'?>
<world>
<dog>
<ears DIRTY='no'>
</ears>
</dog>
<human>
<ears EARRING='yes'>
</ears>
</human>
</world>
使用此架构
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://purl.oclc.org/dsdl/schematron">
<pattern>
<rule context='world/human/ears'>
<assert test="@EARRING">ears element in human must have EARRING attribute</assert>
</rule>
<rule context='world/dog/ears'>
<assert test="@DIRTY">ears element in dog must have DIRTY attribute</assert>
</rule>
</pattern>
</schema>
但是当我引入默认命名空间时,我无法正确验证它。
例如,将其作为 XML 文件:
<?xml version='1.0' encoding='UTF-8'?>
<world xmlns='default-namespace'>
<dog>
<ears DIRTY='no'>
</ears>
</dog>
<human>
<ears EARRING='yes'>
</ears>
</human>
</world>
这是架构:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://purl.oclc.org/dsdl/schematron">
<ns prefix="mets" uri="default-namespace"/>
<pattern>
<rule context='mets:world/human/ears'>
<assert test="@COLOR">ears element in human must have COLOR attribute</assert>
</rule>
<rule context='mets:world/dog/ears'>
<assert test="@DIRTY">ears element in dog must have DIRTY attribute</assert>
</rule>
</pattern>
</schema>
它应该会失败(@COLOR 缺失),但它不会。
我做错了什么?
【问题讨论】:
标签: xml schematron