我有下一个WSDL文件
<definitions targetNamespace="http://soft.com/" name="LoggingWebService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://ws.config.softid.softcomputer.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<types>
<xsd:schema>
<xsd:import namespace="http://soft.com/" schemaLocation="my.xsd"/>
</xsd:schema>
</types>
<message name="log">
<part name="parameters" element="tns:log"/>
</message>
<message name="getLogs">
<part name="parameters" element="tns:getLogs"/>
</message>
<portType name="LoggingWebService">
<operation name="log">
<input message="tns:log"/>
</operation>
<operation name="getLogs">
<input message="tns:getLogs"/>
<output message="tns:getLogsResponse"/>
</operation>
</portType>
</definitions>
我希望使用javax.transformation
将此文件转换为另一个文件,其中messages
将按字母顺序排序(使用'name'中的字符串)。
<definitions targetNamespace="http://soft.com/" name="LoggingWebService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://ws.config.softid.softcomputer.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<types>
<xsd:schema>
<xsd:import namespace="http://soft.com/" schemaLocation="my.xsd"/>
</xsd:schema>
</types>
<message name="getLogs">
<part name="parameters" element="tns:getLogs"/>
</message>
<message name="log">
<part name="parameters" element="tns:log"/>
</message>
<portType name="LoggingWebService">
<operation name="getLogs">
<input message="tns:getLogs"/>
<output message="tns:getLogsResponse"/>
</operation>
<operation name="log">
<input message="tns:log"/>
</operation>
</portType>
</definitions>
我需要什么XSLT文件?帮帮我PLZ
答案 0 :(得分:1)
此样式表也适用于上一个问题中的文件。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
version="1.0" >
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="/wsdl:definitions" >
<xsl:copy>
<xsl:copy-of select="wsdl:types" />
<xsl:apply-templates select="wsdl:message" >
<xsl:sort select="@name" />
</xsl:apply-templates>
<xsl:apply-templates select="wsdl:portType" />
</xsl:copy>
</xsl:template>
<xsl:template match="wsdl:message">
<xsl:copy-of select="current()"/>
</xsl:template>
<xsl:template match="wsdl:portType">
<xsl:copy>
<xsl:apply-templates select="wsdl:operation">
<xsl:sort select="@name"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="wsdl:operation">
<xsl:copy-of select="current()"/>
</xsl:template>
</xsl:stylesheet>
<强>输出强>
<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://soft.com/" schemaLocation="my.xsd"/>
</xsd:schema>
</types>
<message name="getLogs">
<part element="tns:getLogs" name="parameters"/>
</message>
<message name="log">
<part element="tns:log" name="parameters"/>
</message>
<portType>
<operation name="getLogs">
<input message="tns:getLogs"/>
<output message="tns:getLogsResponse"/>
</operation>
<operation name="log">
<input message="tns:log"/>
</operation>
</portType>
</definitions>