当前位置: 首页 > 知识库问答 >
问题:

如何在XSD中指定属性名称空间,以便JAXB正确解释它?

松英喆
2023-03-14

我有一个关于现有XSD中的属性名称空间的小问题。为了使用第三方软件的所有功能,我必须修改此XSD。
我的目标是将元素与命名空间属性混合,如下所示:

<graphics type="RECTANGLE" cy:nodeLabel="Label 1" />

元素定义在默认命名空间中,属性cy:nodelabel定义在特定的命名空间中。

<xsd:attribute name="nodeLabel" type="xsd:string" form="qualified" xmlns="http://www.cytoscape.org"/>

选项form=“qualified”强制JAXB使用namespace=“...”@XMLattribute进行注释,但它采用默认名称空间,而不是http://www.cytoscape.org。如果我在生成的Java类中手动更改这一点,则XML输出是所需的。

我想在XSD中定义属性命名空间,这样我就可以依赖JAXB(resp.xjc)生成正确的Java类。
我如何为XSD中的一个属性指定属性命名空间?

共有1个答案

邰德业
2023-03-14

单个xsd文件只能定义单个命名空间。您需要一个单独的xsd来定义第二个名称空间,然后将其导入到原始xsd中(并相应地引用属性)。

 类似资料:
  • 问题内容: 我正在使用JAXB来基于某些XSD架构生成Java类。对于诸如以下的元素: jaxb生成以下代码: 问题是我们需要使用一些专有的XML工具,这些工具依赖于getter / setter方法的命名约定。例如,对于字段REC_LOC,他们希望使用名为getRecLoc(String value)和setRecLoc()的方法,而不是getRECLOC()。 有什么方法可以自定义jaxb生成

  • 我想知道是否有一种方法来强制JAXB创建与XSD模式相同的名称空间前缀。即,即使我从一个包含xmlns:cts=“http://cts.com”的模式创建JAXB类,在封送类之后,我得到一个具有xmlns:ns1前缀的XML。我知道我可以通过使用NamespacePrefixMapper类来重写这些,但是为什么我需要在我的XSD明确定义了默认前缀的情况下手动执行此操作呢?在我当前的XML中有大量的

  • 面临使用JAXB解组的问题。我需要使用多个名称空间。Java类是为第三方提供的XSD生成的。因此,我不想在Java类中的XMLRootElement指定名称空间,也不想手动更改多个类。 编组逻辑如下: xmlelement类TokenRequest.java BasicInRequestType.java 我在package-info.java中指定了前缀 TokenRequest元素实际上引用了

  • 问题内容: 这是我的xml,需要将其转换为Java。我用过jaxb 并引发以下异常javax.xml.bind.UnmarshalException:意外元素(uri:“ http://www.ae.com/Event/Load ”,本地:“ Order”)。期望的元素是<{} lm:Order> 这是我的解组代码 订购Pojo班 您能否也帮助我阅读,当前正在读取文件,需要读取为XML Strin

  • 我在名称空间方面有问题。我需要从一个公共api (Prestashop)解组。该api使用xml作为xlink类型,如下所示: 每种产品的 API 为: 我为每个XML生成了两个包含pojo类的包。我想从产品列表中获取给定id的任何产品的属性。 我有一个产品,其中包含@XMLSchema命名空间,但这个命名空间仅针对一个路径是静态的。我知道这不是这样做的方法。 下面,我的客户类。 这里有代码:ht

  • 通过使用JavaScript,是否有一种方法可以知道特定属性来自哪个名称空间? 我似乎找不到任何与这个问题相关的东西... 示例: 具有class属性的DIV元素。类来自哪个命名空间? 具有viewBox属性的SVG元素。viewBox来自哪个命名空间? 编辑: 如果希望在USE元素上设置“xlink:href”属性,则必须指定名称空间“http://www.w3.org/1999/xlink”。