Bitte beachten Sie die XSLT, Eingabe XML, gewünschte Ausgabe XML und die tatsächliche Ausgabe, ich bin unten.Wie Namespacepräfix bei der Durchführung der XSLT-Verarbeitung beibehalten wird
- Ich muss alle Tags entfernen, wenn es keinen Wert oder keine Leerzeichen hat. zB entfernen
<abc></abc>
- die unter XSLT verwenden, werden die leeren Tags selbstschließenden Tags umgewandelt (was ich total entfernen möchten), Auch die Namensräumen entfernt werden immer zB:
<soapenv:Body>
wird zu<Body>
umgewandelt (was ich so behalten möchte) - Bitte helfen Sie mir, die gewünschte Ausgabe ohne Namespacepräfix zu erreichen.
XSLT
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="grandParent">
<xsl:copy>
<xsl:apply-templates select="@*" />
<childValues>
<xsl:value-of select="normalize-space(.)" />
</childValues>
<xsl:apply-templates select="node()" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Eingang XML--
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<netconf:rpc xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
message-id="81">
<netconf:edit-config>
<netconf:target>
<netconf:url/>
</netconf:target>
<netconf:config>
<requests module="E5100">
<request action="create" userName="sigma" sessionId="_sessionId">
<SSA>
<NetworkName>NTWK-ntwk_nm</NetworkName>
<PortNumber>2</PortNumber>
<PortType>vdsl</PortType>
<SSAProvision>
<UserDescr></UserDescr>
<SubscriberID></SubscriberID>
</SSAProvision>
</SSA>
</request>
</requests>
</netconf:config>
</netconf:edit-config>
</netconf:rpc>
</soapenv:Body>
</soapenv:Envelope>
gewünschte Ausgangs XML:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<netconf:rpc xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
message-id="81">
<netconf:edit-config>
<netconf:target>
<netconf:url/>
</netconf:target>
<netconf:config>
<requests module="E5100">
<request action="create" sessionId="_sessionId" userName="sigma">
<SSA>
<NetworkName>NTWK-ntwk_nm</NetworkName>
<!-- Port Number removed-->
<PortType>vdsl</PortType>
<SSAProvision>
<UserDescr/>
<SubscriberID/>
</SSAProvision>
</SSA>
</request>
</requests>
</netconf:config>
</netconf:edit-config>
</netconf:rpc>
</soapenv:Body>
</soapenv:Envelope>
tatsächliche Ausgang:
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<rpc xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
message-id="81">
<edit-config>
<target>
<url/>
</target>
<config>
<requests module="E5100">
<request action="create" sessionId="_sessionId" userName="sigma">
<SSA>
<NetworkName>NTWK-ntwk_nm</NetworkName>
<!-- want to remove this PortNumber completely-->
<PortNumber/>
<PortType>vdsl</PortType>
<SSAProvision>
<UserDescr/>
<SubscriberID/>
</SSAProvision>
</SSA>
</request>
</requests>
</config>
</edit-config>
</rpc>
</Body>
</Envelope>
** 1 ** Ihr Problem nicht Ihren Code wiedergegeben werden - siehe: http: // XslTransform .net/94rmq7j - ** 2. ** Es gibt kein "grandParent" -Element in Ihrer XML-Eingabe, die zweite Vorlage tut also nichts. –
Danke Michael, ich bin sehr neu und aus irgendeinem Grund muss ich es so schnell wie möglich arbeiten lassen. Ich stimme zu, dass dies bei Online-Xslt-Parsern funktioniert, aber in der Umgebung, die ich versuche, und in einem unternehmensspezifischen Tool, das auf Java basiert, werden die Namespacepräfixe entfernt. Irgendein Zeiger darauf, was schiefgehen könnte oder was ich überprüfen sollte. – Ramesh
Ich nehme an, Sie wissen, dass die Knoten Ihres Ausgabedokuments immer noch im richtigen Namespace sind (der Namespace wird * nicht * entfernt) und jeder Parser oder jedes XML-Verarbeitungstool sollte funktionieren, unabhängig davon, ob Sie einen Standardnamespace festlegen oder den Namespace festlegen explizit über ein Präfix. –