java - 以编程方式将 use ="required"字段添加到 XML 架构属性

标签 java xml xsd xml-parsing xsd-validation

父 xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="SpecialOption">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="Option" type="xs:string"/>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>
</xs:schema>

修改xsd后:添加use="required"字段

<xs:element name="SpecialOption">
  <xs:complexType>
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="Option" type="xs:string" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:element>

我想将 use="required"字段添加到父 xsd 并生成一个新的 xsd 文件。 我想通过 Java 代码以编程方式执行此操作。

目前,我正在按照以下方法读取 xsd 文件,但无法找到添加 use="required"属性的方法 How to Programmatically Update and Add Elements to an XSD

非常感谢您的帮助。谢谢

最佳答案

使用 XSLT。假设 XSLT 3.0:

<xsl:transform version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="xs:element[@name='SpecialOption']//xs:attribute[@name='Option']">
  <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:attribute name="use">required</xsl:attribute>
  </xsl:copy>
</xsl:template>
</xsl:transform>

对于早期版本的 XSLT 来说这并不困难,只是有点冗长。

(您要求使用 Java,但您当然可以轻松地从 Java 运行 XSLT 转换,这比使用低级 DOM 操作手动编码要容易得多)。

关于java - 以编程方式将 use ="required"字段添加到 XML 架构属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60986700/

相关文章:

xml - Tableau 工作簿 XML 架构

xml - xsd 唯一选择器路径 : exclude specific elements

c++ - 如何从 XSD cxx 树对象写入 XML 文件?

c# - 填充 svcutil off wsdl 生成的类时遇到问题

java - 使用 Jackson API 和 JAXB 注释将 JSON 转换为 XML,反之亦然

jquery - 扩展 XHTML

java - hibernate中jboss narayana jta事务的集成

java - Android Studio 找不到 JAVA_HOME

java - 在父类中使用有关子类的方法是一种不好的做法吗?

Java接口(interface)目录结构?