Java xsl transform производит странный контент после xsl-copy - PullRequest
0 голосов
/ 26 декабря 2011

Я использую следующий xsl для извлечения типов схем из wsdl

<?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()));

но по какой-то причине я получаю много за пустое пространство с какой-то странной строкой после конца элемента 'схемы'? Это работает для некоторых wslds, хотя. Я пробовал eBays public wsdl, который огромен:

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

, который выводит строки после элемента схемы.

1 Ответ

0 голосов
/ 26 декабря 2011

Ваш текущий код таблицы стилей опирается на встроенные шаблоны для доступа к вашему собственному шаблону и, таким образом, вы можете получать выходные данные из текстовых узлов. Поскольку вы, кажется, не хотите, чтобы вы могли либо добавить <xsl:template match="text()"/> к своему коду, либо вам может потребоваться другой подход, когда вы просто делаете, например, <xsl:template match="/"><xsl:copy-of select="//xs:schema" xmlns:xs="http://www.w3.org/2001/XMLSchema"/></xsl:template>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...