编程语言
首页 > 编程语言> > java-XML模式.处理名称空间感知的属性值

java-XML模式.处理名称空间感知的属性值

作者:互联网

我的项目的一部分涉及用户定义模式文档的大量转换.我需要能够更改目标名称空间,支持类型交叉引用并在多个架构文档上构建wsdl.
最常用的操作之一是在将架构导入wsdl文件之前更改名称空间前缀.我正在使用org.xml.sax.ContentHandler,它是startPrefixMapping方法来处理名称空间.除非我想更改元素类型,否则所有方法都工作正常且无缺陷.

这是简单的架构片段

<schema xmlns="http://www.w3.org/2001/XMLSchema">
  <complexType name="Param">
    <sequence>
      <element name="key" type="string"/>
      <element name="value" type="string"/>
    </sequence>
  </complexType>
<!-- omitted -->

必须将其放置在wsdl中,如下所示:

<definitions xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <types>
    <xs:schema>
      <xs:complexType name="Param">
        <xs:sequence>
          <xs:element name="key" type="xs:string"/> <!-- 'xs:' to be added -->
          <xs:element name="value" type="xs:string"/> <!-- 'xs:' to be added -->
        </xs:sequence>
      </xs:complexType>
<!-- omitted -->

问题在于某些模式的属性值( 最佳答案

是的,这是xml schema / wsdl中的主要错误.在属性值中使用xml名称空间前缀是一个巨大的错误(由于前缀值本身并不重要,因此仅是实际名称空间的占位符).不幸的是,我不知道该问题有什么好的解决方案(我不得不实现几乎相同的想法:将多个用户定义的模式合并到一个模式/ wsdl中).我确实知道xerces的值为xml schema model api,但我不知道它是否支持将多个架构合并在一起并生成结果输出.

相关文章

点击查看更多相关文章

转载注明原文:java-XML模式.处理名称空间感知的属性值 - 代码日志

解决方法:

是的,这是xml schema / wsdl中的主要错误.在属性值中使用xml名称空间前缀是一个巨大的错误(由于前缀值本身并不重要,因此仅是实际名称空间的占位符).不幸的是,我不知道该问题有什么好的解决方案(我不得不实现几乎相同的想法:将多个用户定义的模式合并到一个模式/ wsdl中).我确实知道xerces的值为xml schema model api,但我不知道它是否支持将多个架构合并在一起并生成结果输出.

标签:xsd,xml,java,xml-parsing
来源: https://codeday.me/bug/20191102/1988639.html