Avatar billede rasmuslh Nybegynder
02. februar 2006 - 14:38 Der er 2 kommentarer og
1 løsning

Ændring i childnode og kopi af resten af dokument.

Hej

Jeg vil gerne lave ændring i et del-dokument vha. af xslt, men ellers lade resten af dokumentet fremstå uændret. Jeg er meget lille erfaring med XSLT, men har dog kendskab til XPATH og xml generelt så det burde da være til at finde ud af.

Jeg har et dokument som ses nederst, der er bygget på slags Petri net notation. Dpnml er root og place, transition og pattern er alle cildren af den.

Nu vil jeg gerne flytte en token der er et element i et place til et andet place vha. XSLT. Den token der findes i place[@id=p2] skal så enten flyttes til place p4 eller p5. Resten af dokumentet skal være uændret. Vælget mellem et af de to places skal ske på baggrund af en condition som jeg selv laver.

Men i første omgang hvordan kopierer jeg hele documentet pånær places som skal modificeres før de kopieres?

På forhånd tak.
Rasmus

Her er mit startdokument:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="dpnml.xslt"?>
<dpnml xmlns="http://www.itu.dk/people/rlh">
<place id="p2" name="">
<tokens>
  <token tokenid="2" caseid="1" xsi:type="tokenplace2">
  <name>
    <firstname>XXX</firstname>
    <lastname>YYY</lastname>
  </name>
  <cpr>270678-1111</cpr>
  <tel>99999999</tel>
  </token>
</tokens>
</place>
<place id="p4" name="">
<tokens/>
</place>
<place id="p5" name="">
<tokens/>
</place>
<transition id="t2" type="simple">
<invoke  partnerlink="Ribers" operation="async">
  <inputvariable xsi:type="inputvariableType1">
  <firstname />
  <lastname />
  <cpr />
  </inputvariable>
  <outputvariable xsi:type="outputvariableType1">
  <ribers />
  </outputvariable>
</invoke>
<condition place="p2"/>
</transition>
<pattern id="wp5" name="exclusiveChoice">
<inputplace ref="p2"/>
<block>
  <transition ref="t2"/>
  <outputplace ref="p4"/>
</block>
<block>
  <transition ref="t2"/>
  <outputplace ref="p5"/>
</block>
</pattern>
</dpnml>


Sådan vil jeg gerne have det til at se ud:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="dpnml.xslt"?>
<dpnml xmlns="http://www.itu.dk/people/rlh">
<place id="p2" name="">
<tokens/>
</place>
<place id="p4" name="">
<tokens>
  <token tokenid="2" caseid="1" xsi:type="tokenplace2">
  <name>
    <firstname>XXX</firstname>
    <lastname>YYY</lastname>
  </name>
  <cpr>270678-1111</cpr>
  <tel>99999999</tel>
  </token>
</token>
</place>
<place id="p5" name="">
<tokens/>
</place>
.... det samme som før
Avatar billede janegil Nybegynder
03. februar 2006 - 14:16 #1
Du skriver en spesifikk template for det du vil endre.

Så bruker du den generelle identitetstemplaten for å kopiere resten.

http://www.w3.org/TR/xslt#copying

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>
Avatar billede rasmuslh Nybegynder
03. februar 2006 - 22:28 #2
Ok - det prøver jeg lige så vender jeg tilbage.
Avatar billede rasmuslh Nybegynder
14. juli 2006 - 11:58 #3
Luk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester