Java 如何从类路径引用XSD来验证XML?

Java 如何从类路径引用XSD来验证XML?,java,xml,xsd,xerces,xalan,Java,Xml,Xsd,Xerces,Xalan,作为XML转换(使用XSL)的一部分,我将为模式位置创建一个属性,以便验证转换的结果。但是,当我试图将其作为一个自包含测试运行时,我希望能够将模式位置的适当属性/值设置为不在类路径中 通过谷歌搜索,我尝试了各种schemaLocation属性,最新的尝试是: .. <xsl:attribute name="xsi:external-noNamespaceSchemaLocation"> <xsl:value-of select="$schemaLocation"/>

作为XML转换(使用XSL)的一部分,我将为模式位置创建一个属性,以便验证转换的结果。但是,当我试图将其作为一个自包含测试运行时,我希望能够将模式位置的适当属性/值设置为不在类路径中

通过谷歌搜索,我尝试了各种schemaLocation属性,最新的尝试是:

..
<xsl:attribute name="xsi:external-noNamespaceSchemaLocation">
  <xsl:value-of select="$schemaLocation"/>
</xsl:attribute>
..
但是,当我切换到使用从文件系统或外部URL读取XSD文件的模式位置时,验证器运行起来很有趣


如何从类路径读取XSD?

一种方法是实现您自己的LSResourceResolver和LSInput,这样传入的systemId就可以按照您的意愿进行解析

<?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>
Caused by: org.xml.sax.SAXParseException: 
    cvc-elt.1: Cannot find the declaration of element 'emrException'.