java – 如何从CLASSPATH引用XSD来验证我的XML?
发布时间:2020-12-15 02:23:32 所属栏目:Java 来源:网络整理
导读:作为我的 XML转换的一部分(使用XSL),我正在为模式位置创建一个属性,因此可以验证转换的结果.但是,当我尝试将其作为一个独立的测试运行时,我希望能够将模式位置的相应属性/值设置为关闭我的CLASSPATH. 经过一段谷歌搜索,我尝试了各种schemaLocation属性,最新
作为我的
XML转换的一部分(使用XSL),我正在为模式位置创建一个属性,因此可以验证转换的结果.但是,当我尝试将其作为一个独立的测试运行时,我希望能够将模式位置的相应属性/值设置为关闭我的CLASSPATH.
经过一段谷歌搜索,我尝试了各种schemaLocation属性,最新的尝试是: .. <xsl:attribute name="xsi:external-noNamespaceSchemaLocation"> <xsl:value-of select="$schemaLocation"/> </xsl:attribute> .. 改造后的结果如下: <?xml version="1.0" encoding="UTF-8"?> <emrException xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:external-noNamespaceSchemaLocation="emrException_1_0.xsd"> .. <!-- more well-formed XML --> </emrException> 我已经仔细检查过,当验证程序运行时,我的emrException_1_0.xsd文件明显位于CLASSPATH中.它是一个DOM验证器,我使用的是Xerces 2.9.1 / Xalan 2.7.1,我得到的结果是: Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'emrException'. 但是,当我交换使用从文件系统或外部URL读取XSD文件的架构位置时,验证器运行很有趣. 如何从CLASSPATH中读取XSD? 解决方法
一种方法是实现自己的LSResourceResolver和LSInput,这样传入的systemId就可以解析了.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |