2016-12-18 3 views
0

Also hier meine FrageBasis XML/XSLT - Wert vieler Knoten, wenn sie die gleichen Namen haben, und wenn sie TEXT und andere Knoten bestehen

Der ganze einfache XML-Code, den ich zu behandeln bin versucht zu einige Grundlagen von XSL lernen, sind wie folgt dargestellt:

<?xml version="1.0" ?> 
<?xml-stylesheet type="text/xsl" href="penguins.xsl" ?> 

<article> 
<date>28/06/2000 12:30</date> 
<title>Rescued penguins swim home</title> 
<para> 
    <place>Cape Town</place> 
    Some 150 penguins unaffected by the oil spill began their long swim  from Port Elizabeth 
    in the Eastern Cape back to their breeding habitat at Robben Island near Cape Town on Wednesday. </para> 

<para>The penguins, who have all been tagged, were transported in a truck hired by the 
    <company>South African National Conservation of Coastal Birds (Sanccob)</company> 
    to Port Elizabeth on Tuesday night. </para> 

<para>Its not known how many more birds will be released from Port Elizabeth after receiving treatment. </para> 

<para>More than 
    <link ref="www.newsrus.com/oilspill.html">400 tons of fuel oil 
    escaped from the bulk ore carrier Treasure</link> before divers were able to seal the holds. </para> 

<para>The ship was carrying 130 000 tons of iron ore and 1 300 tons of fuel oil when she sank off the 
    Cape West coast last Friday. </para> 

<para>A spokesperson for 
    <company>Sanccob</company> 
     , Christina Pretorius said the centre had a capacity to treat 1 000 penguins but presently 
     there were in excess of 4 500 birds being rehabilitated and more would be brought to the 
     centre on Wednesday. </para> 
<source>John Rolfe</source> 
</article> 

ich versuche, herauszufinden, wie VALUE-oF verwendet ganz drucken besteht <para> anderen subchilds für zB <company> oder <link ref=...> und mit dem Rest der Text. Ich bin mit diesem fest:

<xsl:for-each select="article/para"> 
    <xsl:value-of select="text()"/><br/> 

die nur Text druckt, ohne irgendwelche anderen Subchilds.

Sorry für diese einfache und grundlegende Frage, aber i'v gerade begonnen XML/XSLT

+0

Es ist nicht ganz klar, was Sie fragen. '' gibt den Textwert des angegebenen Eingabeknotens sowie den Textwert aller untergeordneten Elemente dieses Knotens aus (vorausgesetzt, dass der Eingabeknoten ein Element ist, das natürlich untergeordnete Elemente hat). Benötigen Sie die Children von '' auch als XML-Elemente, anstatt nur Text darzustellen? –

+0

Sorry, ich habe es nicht angegeben. Ja, ich möchte den Textwert des angegebenen Eingabeknotens sowie den Textwert der untergeordneten Elemente dieses Knotens ausgeben. Wie Sie im Code sehen können, sind viele para. Wenn ich value-of verwende, drucke nur den ersten Parameter. Was zu tun ist, um jeden Para einzeln auszugeben (mit Text und Text anderer Kinder, die in Para enthalten sind). – najmaka

Antwort

0

Es klingt wie Sie versuchen, eine tiefe Kopie auf dem param-Element auszuführen. Diese Antwort deckt diese XSLT: deep child copy

+0

oder ist korrekt, aber was ich versuche, es druckt den ganzen Knoten for.eg LAST para bestehend aus Text und Kind und in der Lage sein, jeden von ihnen zu formatieren. Wenn ich Deep Copy verwende, druckt es mich einfach im Klartext. – najmaka

1

Sie sollten die Standard-Codierungsmuster für XSLT verwendet werden: eine Template-Regel für jedes Element Namen schreiben, in dem Sie Rekursion seine Kinder zu verarbeiten:

<xsl:template match="p"> 
    <p> 
    <xsl:apply-templates/> 
    </p> 
</xsl:template> 

dann die Vorlage ändern Regeln für jene Elemente, in denen du etwas anderes machen willst.

Dies ist viel detaillierter in jedem XSLT-Lehrbuch behandelt, also wenn Sie es verpasst haben, sollten Sie wirklich mehr lesen, bevor Sie mit dem Programmieren beginnen.

Verwandte Themen