WSDLファイルからインラインスキーマを抽出したい。しかし、そのためにXSL変換を実行する方法がわかりません。そのようなスタイルシートを作成する上での助けは素晴らしいでしょう。
どうもありがとう、
これは私のために働いています:
<?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名前空間を使用していることを前提としています。
これは、wsdl に複数のスキーマ要素が含まれている場合にできること です。ファイル。
Maven プラグインを使用して、Saxon で 2.0 xslt を実行できます ( http://www.mojohaus.org/xml-maven-plugin/examples/transform-saxon.htmlを参照) 。
次に、生成された *.xsd ファイルと SOAP エンベロープの公式定義をインポートするだけの小さなスキーマ ファイルを作成します。
<?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>
カスタム Resource Resolver を使用する場合、schemaLocation 属性は必要ありません。