我可以正确地验证这个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缺少),但它没有。
我做错了什么?
发布于 2019-08-23 19:19:47
每个元素都需要有名称空间前缀。更改:
<rule context='mets:world/human/ears'>至:
<rule context='mets:world/mets:human/mets:ears'>https://stackoverflow.com/questions/57622641
复制相似问题