我想验证对外部实体的引用是硬编码的C:\ foo.txt,而不必在DTD文件中引用该实体。仅在模式中有没有办法做到这一点?下面列出的是一个xml文件,它在其中调用文件。我也需要该架构来验证文件伸出的位置。到目前为止,我还提出了可以验证某些元素的架构,但不能验证引用本身
<!DOCTYPE root [
<!ENTITY file SYSTEM "file:////some/directory" >
]>
<ns1:test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns1="http://example.com/External"
xsi:schemaLocation="http://example.com/External External.xsd">
<ns1:Author>Joe Somebody</ns1:Author>
<ns1:Subject>get the files</ns1:Subject>
<ns1:Content>&file;</ns1:Content>
</ns1:test>
我目前拥有的架构是
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:ns1="http://example.com/External"
targetNamespace="http://example.com/External"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" >
<xs:element name="test">
<xs:complexType>
<xs:sequence>
<xs:element name="Author" type="xs:string" />
<xs:element name="Subject" type="xs:string" />
<xs:element name="Content" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="image"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
要使其最终起作用,我需要能够基于实体文件的错误路径使测试xml失败