JAXB не может генерировать классы Java для XBRL

Я пытаюсь сгенерировать классы Java для типов, определенных в XBRL.

Мой процесс сборки основан на 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

     
       
     

Все плагины, которые я пробовал, не могут быть импортированы.xl:nonEmptyURI

Ноxl сопоставлен сhttp://www.xbrl.org/2003/XLink (который находится в моем каталоге), который импортирует который определяетnonEmptyURI

Какие'S не так? Как я могу это исправить?

Apache CXF
        
            org.apache.cxf
            cxf-xjc-plugin
            
                
                    generate-sources
                    generate-sources
                    
                        xsdtojava
                    
                    
                        
                            
                                ${catalog}
                                ${xsd.path}/${xsd.file}
                                ${package}
                            
                        
                    
                
            
        

Сбой с

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-плагин
        
            
            org.jvnet.jaxb2.maven2
            maven-jaxb2-plugin
            0.8.2
            
                
                    generate
                    generate-sources
                    
                        generate
                    
                
            
            
                ${catalog}
                ${xsd.path}
                ${package}
                false
                true
                
                    
                        org.jvnet.jaxb2_commons
                        jaxb2-basics
                        0.6.4
                    
                    
                        org.jvnet.jaxb2_commons
                        jaxb2-basics-annotate
                        0.6.4
                    
                
                
                    -Xannotate
                    -XtoString
                
            
        

Ошибка такая же, чуть более многословная

[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.
Моджо jaxb2-maven-плагин
         
            
            org.codehaus.mojo
            jaxb2-maven-plugin
            1.5
            
                
                    xjc
                     generate-sources
                    
                        xjc
                    
                
            
            
                ${xsd.path}
                ${package}
                ${catalog}
            
        

Та же ошибка, по-другому сказал Ксерсес

[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)

Ответы на вопрос(2)

Смотрите также:Эта статья

Согласно этой статье, PUBLIC используется для сопоставления URI пространства имен:

-- Match address.xsd by URL --
SYSTEM "http://www.example.com/address/address.xsd" "imports/address.xsd"

-- Match phone-number.xsd by namespace URI --
PUBLIC "http://www.example.com/phone-number" "imports/phone-number.xsd"

Вы загрузили XSD и поместили его в папку для импорта?

 rds29 окт. 2012 г., 13:32
И поскольку я хочу использовать каталог в качестве кэша, я думаю, что мне действительно следует использовать SYSTEM; С чего вы взяли, что PUBLIC следует использовать?
 rds29 окт. 2012 г., 13:27
Это'хуже. Теперь у меня естьНе удалось прочитать документ схемыhttp://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd
Решение Вопроса

м случае. У меня была похожая проблема с генерацией классов 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">
         </property></bindings>
</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 :)

 SUDARSHAN28 февр. 2018 г., 08:49
для меня полезен Upvode для этого
 Todd Schiller03 июл. 2014 г., 16:41
Спасибо за ответ Владимир. Я'мы создали репозиторий Github с примером проекта вgithub.com/finlingua/xbrl-sec-example
 sarath28 июл. 2014 г., 16:19
Как я могу выполнить этот файл, вы могли бы дать мне пример ввода данных. Он запрашивает входной файл в качестве аргумента
 Vladimir Klevko29 июл. 2014 г., 18:09
Сарат, какой пример ты хочешь? Эти XSD доступны для общественности, но если вам нужны более конкретные примеры, дайте мне знать. Я'достану немного для тебя.

Ваш ответ на вопрос