JAXB 无法生成 XBRL 的 Java 类

2023-11-25

我正在尝试为 XBRL 中定义的类型生成 Java 类。

我的构建过程基于 Maven 2,以下是我的试验。我只粘贴build部分,它依赖于一些属性:

package是我的目标包的名称

catalog是目录的路径和文件名。因为我没有互联网连接,所以我有很多条目,但我认为这些总是必要的

-- TR9401 for XBRL resources --
SYSTEM http://www.xbrl.org/2003/XLink http/www.xbrl.org/2003/xl-2003-12-31.xsd
SYSTEM http://www.w3.org/1999/xlink http/www.xbrl.org/2003/xlink-2003-12-31.xsd

xsd.path是 XSD 所在的目录

xsd.file就是下面这个极简XSD的文件名

     <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
       <xs:import namespace="http://www.xbrl.org/2003/instance"
        schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
     </xs:schema>

我尝试过的所有插件都无法导入xl:nonEmptyURI.

But xl被映射到http://www.xbrl.org/2003/XLink(在我的目录中)导入<import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink-2003-12-31.xsd"/>它定义了nonEmptyURI

怎么了?我该如何修复它?

阿帕奇CXF

        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-xjc-plugin</artifactId>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>xsdtojava</goal>
                    </goals>
                    <configuration>
                        <xsdOptions>
                            <xsdOption>
                                <catalog>${catalog}</catalog>
                                <xsd>${xsd.path}/${xsd.file}</xsd>
                                <packagename>${package}</packagename>
                            </xsdOption>
                        </xsdOptions>
                    </configuration>
                </execution>
            </executions>
        </plugin>

失败与

parsing a schema...

[ERROR] src-resolve: Cannot resolve the name 'xl:nonEmptyURI' to a(n) 'type definition' component.
  line 389 of cache/http/www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd

jvnet maven-jaxb2-插件

        <plugin>
            <!-- http://jaxb.java.net/ -->
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>0.8.2</version>
            <executions>
                <execution>
                    <id>generate</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <catalog>${catalog}</catalog>
                <schemaDirectory>${xsd.path}</schemaDirectory>
                <generatePackage>${package}</generatePackage>
                <strict>false</strict>
                <extension>true</extension>
                <plugins>
                    <plugin>
                        <groupId>org.jvnet.jaxb2_commons</groupId>
                        <artifactId>jaxb2-basics</artifactId>
                        <version>0.6.4</version>
                    </plugin>
                    <plugin>
                        <groupId>org.jvnet.jaxb2_commons</groupId>
                        <artifactId>jaxb2-basics-annotate</artifactId>
                        <version>0.6.4</version>
                    </plugin>
                </plugins>
                <args>
                    <arg>-Xannotate</arg>
                    <arg>-XtoString</arg>
                </args>
            </configuration>
        </plugin>

错误是一样的,只是更详细一点

[INFO] Parsing input schema(s)...
[ERROR] Error while parsing schema(s).Location [ cache/http/www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd{389,74}].
org.xml.sax.SAXParseException: undefined simple type 'xl:nonEmptyURI'
    at com.sun.xml.xsom.impl.parser.ParserContext$1.reportError(ParserContext.java:180)
    at com.sun.xml.xsom.impl.parser.NGCCRuntimeEx.reportError(NGCCRuntimeEx.java:175)
    at com.sun.xml.xsom.impl.parser.DelayedRef.resolve(DelayedRef.java:110)
[...]
[ERROR] Error while parsing schema(s).Location [ cache/http/www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd{412,77}].
org.xml.sax.SAXParseException: undefined simple type 'xl:nonEmptyURI'
    at com.sun.xml.xsom.impl.parser.ParserContext$1.reportError(ParserContext.java:180)
    at com.sun.xml.xsom.impl.parser.NGCCRuntimeEx.reportError(NGCCRuntimeEx.java:175)
    at com.sun.xml.xsom.impl.parser.DelayedRef.resolve(DelayedRef.java:110)
[ERROR] Failed to execute goal org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.8.2:generate (generate) on project solvency2: Unable to parse input schema(s). Error messages should have been provided. -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.8.2:generate (generate) on project solvency2: Unable to parse input schema(s). Error messages should have been provided.

Mojo jaxb2-maven-插件

         <plugin>
            <!--http://mojo.codehaus.org/ -->
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>1.5</version>
            <executions>
                <execution>
                    <id>xjc</id>
                     <phase>generate-sources</phase>
                    <goals>
                        <goal>xjc</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <schemaDirectory>${xsd.path}</schemaDirectory>
                <packageName>${package}</packageName>
                <catalog>${catalog}</catalog>
            </configuration>
        </plugin>

同样的错误,Xerces 的说法不同

[ERROR] file:[...]cache/http/www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd[472,74]
org.xml.sax.SAXParseException: src-resolve: Cannot resolve the name 'xl:nonEmptyURI' to a(n) 'simpleType definition' component.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)

您肯定需要下载所有模式并将其添加到您的案例中的目录中。我在生成 Java 类时遇到了类似的问题,但我根本没有使用任何目录,只是将 XBRL 使用的所有模式放入同一个文件夹中。它们在 XBRL 网站上的组织方式相同:

src\main\resources\xbrl\
                       xbrl-instance-2003-12-31.xsd
                       xbrl-linkbase-2003-12-31.xsd
                       xl-2003-12-31.xsd
                       xlink-2003-12-31.xsd
                       xbrl_bindings.xjb

此外,我还添加了一个 JAXB 绑定(如您所见),以解决源生成期间引发的冲突并将其放入同一文件夹中。

xbrl_bindings.xjb:

<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
          xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
          xmlns:xs="http://www.w3.org/2001/XMLSchema"
          xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
          version="2.1">
         <bindings schemaLocation="xl-2003-12-31.xsd" version="1.0">
           <bindings node="//xs:schema//xs:element[@name='title']">
             <property name="xlTitle"/>
         </bindings>
</bindings>

Maven 插件配置:

         <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-xjc-plugin</artifactId>
            <version>2.6.1</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>xsdtojava</goal>
                    </goals>
                    <configuration>
                        <sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
                        <xsdOptions>
                            <xsdOption>
                                <bindingFile>${path.to.xsd}/xbrl_bindings.xjb</bindingFile>
                                <xsd>${path.to.xsd}/xbrl-instance-2003-12-31.xsd</xsd>
                            </xsdOption>
                        </xsdOptions>
                    </configuration>
                </execution>
            </executions>
        </plugin>

享受 XBRL :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAXB 无法生成 XBRL 的 Java 类 的相关文章

随机推荐

  • 如何在react-native iOS应用程序运行时读取Info.Plist?

    在运行时 有没有办法读取CFBundleVersion来自 Info Plist 我想在应用程序的 关于框 中显示版本信息 提前致谢 Ed 我建议你使用这个做得很好library 我想你会得到你需要的所有信息 EDIT 您还可以在 AppD
  • dotnet docker /bin/sh: 1: [dotnet,: 未找到

    我使用 dockerfile 成功构建 但是当我尝试从构建映像运行新容器时 出现以下错误 我需要做什么来解决这个问题 错误 bin sh 1 dotnet 未找到 docker运行命令 docker run rm it p 8080 80
  • 检查套接字是否阻塞(Winsock 特定)[重复]

    这个问题在这里已经有答案了 可能的重复 在Win32中 有没有办法测试套接字是否是非阻塞的 这就是我在Windows中将套接字设置为非阻塞模式的方法 unsigned long mode is blocking 0 1 int ret io
  • 使用另一个控件的值的验证规则

    我正在尝试做一些我之前认为非常简单的事情 在另一个控件的验证规则中使用一个控件的值 我的应用程序具有用户可以输入的各种参数 此处讨论的具体参数定义范围的起点和终点 用户通过文本框设置值 有问题的两个控件是开始和结束文本框 验证时应检查以下条
  • 查找两个字符串中所有公共子字符串的函数未给出正确的输出

    我使用以下函数来查找两个字符串之间的所有公共子字符串 def substringFinder string1 string2 answer anslist len1 len2 len string1 len string2 for i in
  • multiprocessing.Manager().dict().setdefault() 是否损坏?

    这个迟来且可能很愚蠢的部门提出 gt gt gt import multiprocessing gt gt gt mgr multiprocessing Manager gt gt gt d mgr dict gt gt gt d setd
  • SceneKit - SCNText 居中不正确

    我尝试在下面的代码中将文本字符串 SCNText 放入框 SCNBox 中 框的大小看起来正确 但文本不在框的右中心 有什么想法或解决方案吗 谢谢 let geoText SCNText string Hello extrusionDept
  • 如何继承泛型虚方法?

    我有以下代码 我想重写基础列表的 Notify 方法 以便能够在列表的修改上创建事件 TDescendantList class TObjectList
  • 为 OAuth 创建签名和随机数 (Ruby)

    我希望从我的应用程序访问 SmugMug 的 API 以获取用户的相册和图像 用户已通过 ruby 的 OmniAuth 进行身份验证 根据SmugMug 的 OAuth API OAuth需要六个参数 我可以使用 OmniAuth 获取令
  • 添加最少数量的字符来形成回文

    问题 给定任何字符串 添加尽可能少的字符 使其在线性时间内成为回文 I m only able to come up with a O N2 solution 有人可以帮我解决 O N 问题吗 恢复字符串 使用修改过的高德莫里斯普拉特查找最
  • 零长度正则表达式和无限匹配?

    在试图详细阐述答案时this问题 我现在正在尝试了解零长度正则表达式的行为 含义 我经常使用 www regexr com 作为测试 调试 了解正则表达式中发生的情况的游乐场 所以我们有这个最平庸的场景 正则表达式是a 输入字符串是dgwa
  • 如何将动态对象序列化为xml C#

    我有一个object System Collections Generic List 其中包含 1000object DynamicData 在它的内部 每个都有 4 个键和值 还有一个List里面有 2 个键和值 我需要将此对象序列化为
  • 为什么使用匿名类型可以工作,而使用显式类型却不能在 GroupBy 中使用?

    我有一个问题 我希望组类型是强类型的 但如果我这样做 它就不能正确分组 请参阅下面的代码 using System using System Collections Generic using System Linq namespace C
  • Rails & Devise:设计未显示在 Rails 控制台中的特定列

    我正在尝试在我的用户模型上使用 Devise 但是当我进入 Rails 控制台并尝试时User new我只得到 irb main 002 0 gt User new gt
  • 反思获取代表信息

    通过执行以下命令我可以获得有关方法的信息 Type t typeof someType MemberInfo mInfo t GetMethods 如何获取有关类型内声明的委托的信息 Call Type GetNestedTypes获取嵌套
  • 升级 haskell 堆栈使用的 ghc 版本

    我正在尝试将我为 haskell stack 安装的 ghc 版本从版本 8 0 2 更新到 8 2 1 但似乎我丢失了一些东西 user localhost stack resolver ghc 8 2 1 setup stack wil
  • 计算矩阵中一点与所有其他点之间的距离

    我是Python新手 我需要实现一个聚类算法 为此 我需要计算给定输入数据之间的距离 考虑以下输入数据 1 2 8 7 4 2 9 1 7 0 1 5 6 4 3 我希望在这里实现的是 我想计算 1 2 8 与所有其他点的距离 并找到距离最
  • 线程安全对象 - 静态还是非静态?

    我最近在接受采访 技术人员问我如何使应用程序线程安全 嗯 解释完之后lock 正确的是 他说让物体保持静态并不是一个好主意 private static readonly object syncLock new object 他声称原因是静
  • 使用 HTML5 数据属性的 CSS 值[重复]

    这个问题在这里已经有答案了 width attr data width 我想知道是否有任何方法可以使用 HTML5 设置 css 值data 属性的设置方式与设置 css 的方式相同content 目前它不起作用 HTML div div
  • JAXB 无法生成 XBRL 的 Java 类

    我正在尝试为 XBRL 中定义的类型生成 Java 类 我的构建过程基于 Maven 2 以下是我的试验 我只粘贴build部分 它依赖于一些属性 package是我的目标包的名称 catalog是目录的路径和文件名 因为我没有互联网连接