我想从WSDL文件中提取内联架构。但是,我不知道如何为此执行XSL转换。任何创建这样的样式表的帮助都会很棒。
非常感谢,
答案 0 :(得分:0)
这个适合我:
<?xml-stylesheet type="text/xsl"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:s="http://www.w3.org/2001/XMLSchema" >
<xsl:output method="xml" />
<xsl:template match='text()' />
<xsl:template match="//s:schema">
<xsl:copy-of select='.'/>
</xsl:template>
</xsl:stylesheet>
它假定您的内联架构使用http://www.w3.org/2001/XMLSchema命名空间。
答案 1 :(得分:0)
当wsdl包含多个schema-elements时,您可以执行以下操作: 使用xsd-split.xslt https://gist.github.com/ebratb/3819949 将* .wsdl文件拆分为几个* .xsd文件。
您可以使用maven插件运行带有Saxon的2.0 xslt(参见http://www.mojohaus.org/xml-maven-plugin/examples/transform-saxon.html)
然后编写一个小的模式文件,只导入那些生成的* .xsd文件以及肥皂信封的官方定义。
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://your.company.com/dummy" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://<target namespace of the first xsd file>" schemaLocation="file:///path/to/first.xsd" />
<xsd:import namespace="http://<target namespace of the second xsd file>" schemaLocation="file:///path/to/second.xsd" />
...
<xsd:import namespace="http://schemas.xmlsoap.org/soap/envelope/" schemaLocation="http://schemas.xmlsoap.org/soap/envelope/" />
</xsd:schema>
使用自定义资源解析程序时,不需要schemaLocation属性。