WSDL引用其他文件

时间:2014-06-19 14:05:38

标签: web-services xpath xsd wsdl

我正在编写一个程序来获取WSDL和任何导入的文件,然后将它们保存到一个目录中。作为其中一部分,我想做的是展平文件结构,这样只有一个目录包含WSDL引用的所有文件或其引用文件引用的文件。所以我需要进入每个文件,无论哪里有导入,我都需要删除名称之外的路径。这是一个例子:

<xsd:import schemaLocation="xsds/Currency.xsd" namespace="urn:example.com:enterprise:schemas:reference:currency">
</xsd:import>

因此上面的导入引用了文件xsds/Currency.xsd,我想从中提取Currency.xsd。我可以使用XPath表达式获取此属性的内容以匹配标记,如下所示:

//*[local-name()='import']/@schemaLocation

但是,可能还有其他类型的标记,其中WSDL或其引用的xsds可能会导入此XPath表达式不匹配的文件。我可能需要匹配的其他标签或字段名称是什么,所以我不会错过任何文件?

1 个答案:

答案 0 :(得分:1)

您可能想要使用

//@schemaLocation

可以捕获所有schemaLocation属性,而与它们出现的位置无关。

schemaLocation命名空间中包含XSD属性的元素:

  1. import
  2. include
  3. redefine
  4. 您应该知道,在XMLSchema-instance命名空间中,限定的schemaLocation属性将包含空格分隔对,其中每个偶数编号的组件都是一个位置(奇数 - 编号的项目是名称空间)。