- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我面临 JDK(1.6 和 1.7)XSLT 转换的问题。问题是我想要处理简单的 WSDL,该 WSDL 使用 xsd:import 来处理其 XSD(位于同一位置)和我的 XSLT 转换。
public static void main(String[] args) throws Exception {
InputStream xmlStream = new FileInputStream("/home/d1x/temp/xslt/test.wsdl");
String xmlSystemId = "file:///home/d1x/temp/xslt/test.wsdl";
InputStream xsltStream = XsltTransformation.class.getResourceAsStream("wsdl-viewer.xsl");
OutputStream outputStream = new FileOutputStream("/home/d1x/temp/xslt/output.html");
new XsltTransformation().transform(xmlStream, xmlSystemId, xsltStream, outputStream);
}
public void transform(InputStream xmlStream, String xmlSystemId, InputStream xsltStream, OutputStream outputStream) {
Source xmlSource = new StreamSource(xmlStream, xmlSystemId);
Source xsltSource = new StreamSource(xsltStream);
TransformerFactory transFact = TransformerFactory.newInstance();
try {
Transformer trans = transFact.newTransformer(xsltSource);
trans.transform(xmlSource, new StreamResult(outputStream));
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
}
当我运行代码时,我遇到了这个很难调试的异常。当我删除导入时,一切正常。
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
at com.sun.org.apache.xml.internal.utils.SuballocatedIntVector.elementAt(SuballocatedIntVector.java:438)
at com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBase._firstch(DTMDefaultBase.java:524)
at com.sun.org.apache.xalan.internal.xsltc.dom.SAXImpl.access$200(SAXImpl.java:76)
at com.sun.org.apache.xalan.internal.xsltc.dom.SAXImpl$NamespaceChildrenIterator.next(SAXImpl.java:1433)
at com.sun.org.apache.xalan.internal.xsltc.dom.StepIterator.next(StepIterator.java:111)
at com.sun.org.apache.xalan.internal.xsltc.dom.StepIterator.next(StepIterator.java:111)
at com.sun.org.apache.xalan.internal.xsltc.dom.DupFilterIterator.setStartNode(DupFilterIterator.java:96)
at com.sun.org.apache.xalan.internal.xsltc.dom.UnionIterator$LookAheadIterator.setStartNode(UnionIterator.java:78)
at com.sun.org.apache.xalan.internal.xsltc.dom.MultiValuedNodeHeapIterator.setStartNode(MultiValuedNodeHeapIterator.java:212)
at com.sun.org.apache.xalan.internal.xsltc.dom.CurrentNodeListIterator.setStartNode(CurrentNodeListIterator.java:153)
at com.sun.org.apache.xalan.internal.xsltc.dom.CachedNodeListIterator.setStartNode(CachedNodeListIterator.java:55)
at GregorSamsa.topLevel()
... etc...
WSDL 本身非常简单,并且使用导入:
...<types>
<xsd:schema>
<xsd:import namespace="http://mytest.com" schemaLocation="test.xsd"/>
</xsd:schema>
</types>...
可以在以下位置找到使用的 XSLT:http://tomi.vanek.sk/xml/wsdl-viewer.xsl
最佳答案
我通过切换到 JAXP 的 Saxon 实现而不是内置的 Java 实现来解决这个问题。唯一的代码更改是:
TransformerFactory transFact = net.sf.saxon.TransformerFactoryImpl.newInstance();
关于java - JAXP 与 XSD import ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18850845/
想象一个 xml 文件,它使用 noNamespaceSchemaLocation 引用架构。 我想在解析期间使用某种解析技术(例如用于解析架构包含的 ResourceResolver)动态解析 no
有什么区别吗 DocumentBuilder.parse(InputStream) 和 DocumentBuilder.parse(InputSource) ? 我只能发现对于第一种情况,解析器会从流
Transformer 方法转换的签名是 void transform(Source xmlSource,Result outputTarget)throws TransformerException
我正在尝试从 android(java) 中的 xml 文档中检索一个节点。 XPATH config:Manifest/config:Text[@config:name='site
我有一个像这样的 XML: john 20 20 kayla female 20
在使用 Xerces 验证 XML 文档时,它会尝试访问 w3c.org 中的互联网资源。我的应用程序需要离线/在防火墙后面工作,因此抛出异常。 有解决办法吗? ps。此链接提供了一些见解,但没有解决
我有一个 Tomcat 5.5 Web 应用程序,它使用 Apache Commons-Configuration 库在运行时生成 XML 配置文件。 Commons-Configuration 反过
我想提供有关正在使用的 JAXP 实现以及从哪个 JAR 文件加载它的诊断信息。 实现此目的的一种方法是在例如 DocumentBuilderFactory 的实例中创建,然后检查该类的属性: pri
有人知道在底层 POJO 上运行的标准 javax.xml.transform.Source 和 javax.xml.transform.Result 的实现吗? 换句话说,我想使用 XSLT 将一个
我正在动态生成一个需要在运行时针对架构进行验证的文档。我遇到的问题是文档的结构是正确的,但每个级别的元素顺序不正确。有没有办法告诉转换器按照 xsd 文件指定的顺序写出元素?或者我是否必须解析 xsd
我遇到一种情况,我们想要根据文件系统中放置的 XSD 来验证作为字节流保存在内存中的 XML 文档。我们希望避免在 XML 文件中明确提及文件名,而是告诉 XML 解析器使用一个或多个 XSD 文件的
我有一个引用了 dtd 文件的 xml 文件。 ... 我设法用 JAXP 读取这个文件,但前提是 referenced.dtd 与 xml 文件位于同一文件夹中。否则我会收到无法加载 dtd 文
我想通过 DocumentBuilder 中完成的验证提供我自己的消息,而不是来自 XMLMessages.properties 的消息。 现在我看到一个属性 error-reporter需要设置为扩
javax.xml.soap.MessageFactory是否可以重用? IE。 msgFactory = MessageFactory.newInstance(); 我可以缓存 msgFactory
HTML5 规范中是否存在无法使用 JAXP 等 XML 库创建的元素?一个例子是未在 XML 中定义的命名 HTML 实体。还有其他不兼容的地方吗? 最佳答案 JAXP 显然只适用于格式良好的 XM
我在使用 XSLT 转换的 Java 应用程序下工作。我在其中有很多 document() 调用,所以可能有 java.lang.OutOfMemory 异常(我实际上有),因为在每次调用 docum
我想知道在使用Java API for XML处理时,哪些对象可以被重用(在相同或不同的文档中),JAXP: DocumentBuilderFactory DocumentBuilder XPath
JAXP 和 JAXB 有什么区别? 最佳答案 JAXP(用于 XML 处理的 Java API)是一个相当过时的总称,涵盖了 JavaSE 中的各种低级 XML API,例如 DOM、SAX 和 S
我想读取一个可能很大的 XML 文件。为了内存效率和易于处理,我想使用 StAX 和 DOM 的混合,如所述 here . 我的输入如下所示(它是 OSM ) .
(问题已更新,见下文) 在 Java 7 上,我使用 JAXP 来解析 XML。 令人惊讶的是,在 XML 模式验证期间,内置实现 xerces 发出 http 请求以解决某些问题(该请求失败)。 问
我是一名优秀的程序员,十分优秀!