XSD 文档作为构建过程的一部分

XSD documentation as a part of build process

我有多个 XSD 描述模式的文件。作为构建过程的结果,我想生成一个人类可读的文档。

XSD 在存储库 (gitflow) 中进行维护和审查,提交文档会使存储库变得混乱。我想在构建过程中生成人类可读的 HTML(maven / gradle / ant build 或简单的 CLI 界面)

发现这个 post How to convert xsd to human readable documentation? and DocFlex/XML Maven plugin 看起来很有趣,但我不敢相信这是唯一的。

有什么有用的提示吗?

我最终得到了包含在 gradle 构建中的 Oxygen Editor schemaDocumentation.sh 脚本。

我的 build.gradle 到目前为止看起来像这样 - 我怀疑它仍在进行中。它完成了它的工作,HTML 生成到 build/generated-html 文件夹,但它需要在 OXYGEN_HOME 浴室中安装氧气(包括许可证)。我可能会在将来的某一天修复它

apply plugin: 'java'

version = "1.0-SNAPSHOT"

ext {
    generatedDir = new File(buildDir, "generated-html")
}

def OXYGEN_HOME = "/opt/java/oxygen"
def schemaFiles = ["page", "metadata"]

schemaFiles.each { pageName -> 
    task "${pageName}SchemaTask"(type: JavaExec) {
        mkdir generatedDir

        classpath = files([
            "$OXYGEN_HOME", 
            "$OXYGEN_HOME/classes", 
            "$OXYGEN_HOME/lib", 
            "$OXYGEN_HOME/lib/oxygen.jar", 
            "$OXYGEN_HOME/lib/oxygenDeveloper.jar", 
            "$OXYGEN_HOME/lib/fop.jar", 
            "$OXYGEN_HOME/lib/xmlgraphics-commons-1.5.jar", 
            "$OXYGEN_HOME/lib/batik-all-1.7.jar", 
            "$OXYGEN_HOME/lib/xercesImpl.jar", 
            "$OXYGEN_HOME/lib/xml-apis.jar", 
            "$OXYGEN_HOME/lib/org.eclipse.wst.xml.xpath2.processor_1.2.0.jar", 
            "$OXYGEN_HOME/lib/icu4j.jar", 
            "$OXYGEN_HOME/lib/saxon.jar", 
            "$OXYGEN_HOME/lib/saxon9ee.jar", 
            "$OXYGEN_HOME/lib/log4j.jar", 
            "$OXYGEN_HOME/lib/resolver.jar", 
            "$OXYGEN_HOME/lib/oxygen-emf.jar", 
            "$OXYGEN_HOME/lib/commons-httpclient-3.1.jar", 
            "$OXYGEN_HOME/lib/commons-codec-1.3.jar", 
            "$OXYGEN_HOME/lib/commons-logging-1.0.4.jar", 
            "$OXYGEN_HOME/lib/httpcore-4.3.2.jar", 
            "$OXYGEN_HOME/lib/httpclient-cache-4.3.5.jar", 
            "$OXYGEN_HOME/lib/httpclient-4.3.5.jar", 
            "$OXYGEN_HOME/lib/fluent-hc-4.3.5.jar", 
            "$OXYGEN_HOME/lib/httpmime-4.3.5.jar", 
            "$OXYGEN_HOME/lib/commons-logging-1.1.3.jar", 
            "$OXYGEN_HOME/lib/commons-codec-1.6.jar"
        ].toList())
        main = 'ro.sync.xsd.documentation.XSDSchemaDocumentationGenerator'  
        jvmArgs = ["-Djava.awt.headless=true"]
        args = ["schema/${pageName}.xsd", "-format:html", "-split:location", "-out:$generatedDir/${pageName}.html"] 
    }   
}

task schema(dependsOn: tasks.matching { Task task -> task.name.endsWith("SchemaTask")}) {
}

defaultTasks 'schema'

我已经在 post http://jakub.marchwicki.pl/posts/2015/08/26/get-your-xsd-docs-as-build-process/

的构建过程中记录了从 XSD 构建文档的整个方法