【发布时间】:2014-08-27 13:56:51
【问题描述】:
我错过了什么?我不明白为什么我的转换不是模式感知的。 参考:
- http://www.saxonica.com/documentation/schema-processing/satransformapi.html
- http://www.saxonica.com/documentation9.4-demo/html/changes/intro92/install92.html
我知道文档很好,xsd/xslt/xml 文件由其他系统处理并且工作正常。我正在尝试为自己创建一个桌面命令行工具。
源代码
def main(args: Array[String])
{
System.setProperty( "javax.xml.transform.TransformerFactory", "com.saxonica.config.EnterpriseTransformerFactory")
val factory = new EnterpriseTransformerFactory()
factory.setAttribute(FeatureKeys.SCHEMA_VALIDATION, new Integer(Validation.STRICT))
val schemaXXX = new StreamSource( new File("PATH/to/xxx.xsd") )
val schemaYYY = new StreamSource( new File("PATH/to/yyy.xsd") )
factory.addSchema(schemaXXX)
factory.addSchema(schemaYYY)
val XSLT = new StreamSource(new File("PATH/to/zzz.xslt"))
val transformer = factory.newTransformer(XSLT)
val input = new StreamSource(new File("PATH/to/file.xml"))
val result = new StringWriter();
transformer.transform(input, new StreamResult(result))
println(result.toString())
}
结果:
The transformation is not schema-aware, so the source document must be untyped
【问题讨论】:
-
不熟悉Java环境。但是
SchemaAwareTransformerFactory和EnterpriseTransformerFactory一样吗? -
@MathiasMüller 给出这个是:saxonica.com/documentation9.4-demo/html/changes/intro92/… 在任何情况下,SchemaAwareTransformerFactory 在我的 jar 文件中不可用,而 EnterpriseTransformerFactory 是。
-
SchemaAwareTransformerFactory 存在于旧版本中,已被 EnterpriseTransformerFactory 取代