Die xquery-Transformation erstellt einen leeren Namespace im ElementJava

Java-Forum
Guest
 Die xquery-Transformation erstellt einen leeren Namespace im Element

Post by Guest »

Es tut mir leid, aber ich glaube, ich sehe den Fehler, den ich hier mache, einfach nicht.
Ich habe eine Camel-Route, die ein XML zurückgibt, und um die Ausgabe testen zu können, habe ich einen JUnit-Test geschrieben welches mit SpringRunner läuft. Dort erhalte ich den XML-Stream von der Börse, den ich gegen eine XSD validiere. Das funktioniert großartig, weil das XSD eine Ausnahme auslöst, weil das Ausgabe-XML nicht gültig ist, aber ich verstehe nicht, warum die folgende XQuery ein Element mit EMPTY NAMESPACE generiert? mehr Code bereitstellen):

Code: Select all

declare default element namespace "http://www.dppgroup.com/XXXPMS";
let $cmmdoc := $doc/*:cmmdoc
, $partner := $doc/*:cmmdoc/*:information/*:partner_gruppe/*:partner
, $sequence:= fn:substring($cmmdoc/@unifier,3)
return 
{
for $x in $partner
where $x[@partnerStatusCode = " "]
return
element {"DataGroup" } {

}
}
Mein Problem ist, dass mit diesem Code das resultierende XML das DataGroup-Element mit der folgenden Namespace-Definition enthält:

Code: Select all






Der Ausschnitt aus dem Unit-Test: Ich verwende jdk1.8_102

Code: Select all

    String xml = TestDataReader.readXML("/input/info/info_in.xml", PROJECT_ENCODING);
quelle.sendBody(xml);

boolean valid = false;
try {
DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream((byte[]) archiv.getExchanges().get(1).getIn().getBody());
Document document = documentBuilder.parse(byteArrayInputStream);

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(document);

transformer.transform(source, result);
String xmlString = result.getWriter().toString();
System.out.println(xmlString);
In keiner XQuery-Einführung/Tutorial/Erklärung kann ich einen Grund finden, warum dies passiert. Können Sie bitte erklären, warum das DataGroup-Element nicht im Standard-Namespace ist?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post