2011-12-26 58 views
0

我使用下面的XSL來檢索WSDLJava的XSL轉換產生的XSL-副本後怪異的內容

<?xml version="1.0" encoding="UTF-8"?><xsl:transform version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" encoding="UTF-8"/> 
<xsl:template match="/"> 
    <xsl:apply-templates /> 
</xsl:template> 
<xsl:template match="//*[local-name()='schema' and namespace-uri()='http://www.w3.org/2001/XMLSchema']"> 
    <xsl:copy-of select="."></xsl:copy-of> 
</xsl:template></xsl:transform> 

模式類型和下面的Java代碼片段

tFactory = TransformerFactory.newInstance(); 
xslSource = new StreamSource("resources/input/wsdl2xsd.xsl"); 
xmlSource = new StreamSource(wsdlURI.toString()); 
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
outStream = new BufferedOutputStream(byteArrayOutputStream); 
transformer = tFactory.newTransformer(xslSource); 
transformer.transform(xmlSource, new StreamResult(outStream)); 
System.out.print(new String(byteArrayOutputStream.toByteArray())); 

但出於某種原因,我在我的'schema'元素結束之後,我會爲空的空間添加一些奇怪的字符串嗎?它適用於某些wslds。我試過的eBays公共WSDL這是巨大的:

http://developer.ebay.com/webservices/741/eBaySvc.wsdl

其中「模式」元素之後輸出字符串。

回答

0

那麼你當前的樣式表代碼依靠the built-in templates來達到你自己的模板,這樣你就可以從文本節點獲得輸出。 因爲您似乎並不想要,您可以將<xsl:template match="text()"/>添加到您的代碼中,或者您可能需要使用不同的方法,例如, <xsl:template match="/"><xsl:copy-of select="//xs:schema" xmlns:xs="http://www.w3.org/2001/XMLSchema"/></xsl:template>