Die Abfrage besteht darin, das erste untergeordnete Element mit dem Wert zu ermitteln, in dem das entsprechende übergeordnete Element mehr als ein untergeordnetes Element enthalten sollte.Wählen Sie das übergeordnete Element und das erste untergeordnete Element aus, das über mehr als ein untergeordnetes Element verfügt
Hier ist schwierig, Problem ist, dass Eltern-und Kind-Element dynamisch generiert wird. das heißt, wir wissen nicht über die Eltern und Kind Namen
Hier ist der XML-Input:
<PageTwo>
\t \t \t <List25>No</List25>
\t \t \t <List11>Air Gun|Gun</List11>
\t \t \t <Multilist02>
\t \t \t \t <Value>.204</Value>
\t \t \t \t <Value>.22</Value>
\t \t \t \t <Value>.243</Value>
\t \t \t </Multilist02>
\t \t \t <Multilist05>
\t \t \t \t <Value>Air Gun|NOS|NOS</Value>
\t \t \t \t <Value>Optic|Binocular|ZULU5</Value>
\t \t \t </Multilist05>
\t \t \t <List23>DAK</List23>
\t \t \t <Text01>NA</Text01>
\t \t \t <List13>EA</List13>
\t \t \t <List26>No</List26>
\t \t \t <List07>IN</List07>
\t \t \t <List08>LB</List08>
\t \t </PageTwo>
In dem obigen XML, Multilist enthält mehr als ein Kind-Wert und muss das erste untergeordnete Element mit Wert
extrahieren. Beispiel [Ausgenommen] Ausgang
<Multilist02>
\t \t \t <Value>.204</Value>
\t \t \t </Multilist02>
\t \t \t <Multilist05>
\t \t \t \t <Value>Air Gun|NOS|NOS</Value>
\t \t \t </Multilist05>
Wie ich schon sagte, in der eingehenden xml wir wissen nicht, welcher Name für Eltern und Kind-Element kommen wird.
ich versuchte unten XSLT und der Lage, das erste Kind zu extrahieren, aber nicht in der Lage, das Kind zu bedecken mit Mutterelement
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.oracle.com/webfolder/technetwork/xml/plm/2014/08/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.oracle.com/webfolder/technetwork/xml/plm/2014/08/ http://www.oracle.com/webfolder/technetwork/xml/plm/2014/08/aXML.xsd">
<xsl:template match="/">
<xsl:for-each select="/PageTwo/*">
<xsl:for-each select="*">
<xsl:variable name="i" select="position()" />
<xsl:if test="$i = 1">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Erzeugter Ausgang entspricht:
<?xml version="1.0" encoding="UTF-8"?><Value>.204</Value><Value>Air Gun|NOS|NOS</Value>
freundlicher zu diesem Thema
EDIT: Unten Antwort obige Frage gelöst, die ich als Antwort akzeptiert
Hinzufügen eine weitere Abfrage über XML-Eingabedatei mit Attributen zu Root-Knoten hinzugefügt wird.
New Input: Added Attribute Knoten
<PageTwo xmlns="http://www.oracle.com/webfolder/technetwork/xml/plm/2/2/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.oracle.com/webfolder/technetwork/xml/plm/2/2/ http://www.oracle.com/webfolder/technetwork/xml/plm/2/2/aXML.xsd" creator="admin, nawaz(nawaz)">
\t \t \t <List25>No</List25>
\t \t \t <List11>Air Gun|Gun</List11>
\t \t \t <Multilist02>
\t \t \t \t <Value>.204</Value>
\t \t \t \t <Value>.22</Value>
\t \t \t \t <Value>.243</Value>
\t \t \t </Multilist02>
\t \t \t <Multilist05>
\t \t \t \t <Value>Air Gun|NOS|NOS</Value>
\t \t \t \t <Value>Optic|Binocular|ZULU5</Value>
\t \t \t </Multilist05>
\t \t \t <List23>DAK</List23>
\t \t \t <Text01>NA</Text01>
\t \t \t <List13>EA</List13>
\t \t \t <List26>No</List26>
\t \t \t <List07>IN</List07>
\t \t \t <List08>LB</List08>
\t \t </PageTwo>
Angenommen, wenn ich das Element analysieren eher mit ihrem Namen *
als Antwort angibt, auf der unten Lösung, die ich
Aktuelle Antwort
<xsl:template match="/">
<xsl:apply-templates select="*/*[*[2]]"/>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@* | *[1]"/>
</xsl:copy>
</xsl:template>
Auch Kann ich die Elemente analysieren, um ihre entsprechenden Namen angeben, wenn Attribute in dem Wurzelknoten nicht vorhanden sind. Aber ich möchte das Element mit ihrem Namen mit Root-Knoten analysieren Attribute
Gestellte Lösung
<?xml version="1.0" encoding="UTF-8"?><PageTwo xmlns="http://www.oracle.com/webfolder/technetwork/xml/plm/2/2/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.oracle.com/webfolder/technetwork/xml/plm/2/2/ http://www.oracle.com/webfolder/technetwork/xml/plm/2/2/aXML.xsd" creator="admin, nawaz(nawaz)">
<Multilist02>
\t \t \t <Value>.204</Value>
</Multilist02>
<Multilist05>
\t \t \t \t <Value>Air Gun|NOS|NOS</Value>
</Multilist05>
</PageTwo>
Zustand das Element mit ihren Namen Parse anzuzeigen
Ist ' \t \t \t .204 \t \t \t Multilist02> \t \t \t \t \t \t \t Luftgewehr | NOS | NOS \t \t \t Multilist05>' die komplette Ausgabe, die Sie wollen, keine anderen Elemente, n o Wurzelelement? –
@MartinHonnen will ich ja nur 0,204 Multilist02> Luftgewehr | NOS | NOS Multilist05> –
nawazlj