考虑一个以以下内容开头的XML文档,其中包含多个模式(这不是一个特定于Spring的问题;这只是一个方便的XML示例):
我想要验证文档,但是我不知道制作文档的人将使用哪些命名空间。我信任文档作者,所以我愿意下载任意模式URL。如何实现我的验证器?
我知道可以通过调用DocumentBuilderFactory实例的setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource", new String[] {...})方法指定模式,但在解析文档之前,我不知道模式URL。
当然,我可以在解析文档后提取XSD URL,并通过指定上述“http://java.sun.com/xml/jaxp/properties/schemaSource”来运行它通过验证器,但肯定已经有自动完成这一过程的实现了吧?
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xmlns:osgi="http://www.springframework.org/schema/osgi"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxrs
http://cxf.apache.org/schemas/jaxrs.xsd
http://www.springframework.org/schema/osgi
http://www.springframework.org/schema/osgi/spring-osgi.xsd">
我想要验证文档,但是我不知道制作文档的人将使用哪些命名空间。我信任文档作者,所以我愿意下载任意模式URL。如何实现我的验证器?
我知道可以通过调用DocumentBuilderFactory实例的setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource", new String[] {...})方法指定模式,但在解析文档之前,我不知道模式URL。
当然,我可以在解析文档后提取XSD URL,并通过指定上述“http://java.sun.com/xml/jaxp/properties/schemaSource”来运行它通过验证器,但肯定已经有自动完成这一过程的实现了吧?