få ut specifik text ur xml (xls) fil

Trädvy Permalänk
Medlem
Plats
Skänninge
Registrerad
Okt 2002

få ut specifik text ur xml (xls) fil

hej har denna tag i xml:en
<Configurator_Generic_Text__GT3_ID2>LHM200SC Width 540 mm Length 1150 mm Single Nylon Logotype </Configurator_Generic_Text__GT3_ID2>

har gjort denna tag
<?substring-after(Configurator_Generic_Text__GT3_ID2,'Length')?>

när denna körts skrivs ju allt efter ordet Length ut. men finns det nått bra sätt att bara skriva ut i detta fall "1150" texten 1150 kommer att variera i varje rapport jag gör.

så går det att få det att den startar tex efter length och kör tex 4 tecken frammåt ?

skulle hjälpa rätt mycket om man kan göra nått på detta vis då ursprungs xml texten är gigantisk med data som skall skrivas ut i olika fält. och då bara enstaka ord i varje fält. och varje ord som skall skrivas ut är ibland unikt. men dock har dom alltid samma ord innan sig.

hoppas ni förstår hur jag menar. hungrig och trött så förklaringarna blir nog inte det bästa.

Datorn: G4:a goes imperial
Fear can never kill u

Trädvy Permalänk
Medlem
Plats
Kristianstad
Registrerad
Apr 2009

Är inte riktigt med på vad du menar, men kan du inte köra substring igen på den strängen som du får ut av din första substring?

Trädvy Permalänk
Medlem
Plats
Skänninge
Registrerad
Okt 2002

låter som en kanske vettig ide.
trött som fan huvet funkar inte som det skall idag

Datorn: G4:a goes imperial
Fear can never kill u

Trädvy Permalänk
Medlem
Plats
Skänninge
Registrerad
Okt 2002

<Configurator_Generic_Text__GT3_ID2>LHM200SC Width 540 mm Length 1150 mm Single Nylon Logotype </Configurator_Generic_Text__GT3_ID2>

finns det nått annat istället för substring att skriva ut TEX "1150" då dom siffrorna kommer att ändras i varje rapport (dock vara 4siffriga) men tex order Length kommer alltid att vara kvar. borde finnas nått lätt sätt att bara skriva ut order efter tex length.

ursäkta om det låter som en dum fråga men är typ nybörjare på xml / xsl fronten.

Datorn: G4:a goes imperial
Fear can never kill u

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Maj 2007

Är det alltid i millimeter som längden anges?

<?substring-before(substring-after(Configurator_Generic_Text__GT3_ID2, 'Length '), ' mm')?>

Nästla in en substring-before() på resterande text, och utgå från 'mm'.

Trädvy Permalänk
Medlem
Plats
Skänninge
Registrerad
Okt 2002

jepps måtten anges alltid i millimeter.

tack så mycket för tagen bjornie. funkar ypperligt bra..

Datorn: G4:a goes imperial
Fear can never kill u

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2004

Jag är ingen xslt-programmerare precis men jag tyckte det lät som en bra övning så jag gjorde den här XSLT 2.0-varianten:

XML-fil:

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="getlength.xsl"?> <root> <Configurator_Generic_Text__GT3_ID2>LHM200SC Width 540 mm Length 1150 mm Single Nylon Logotype</Configurator_Generic_Text__GT3_ID2> <Configurator_Generic_Text__GT3_ID2>aaa Width 540 mm Length 473 mm bbb</Configurator_Generic_Text__GT3_ID2> </root>

XSL-fil:

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0"> <xsl:template match="//Configurator_Generic_Text__GT3_ID2"> <xsl:variable name="theInput" select="."/> <xsl:analyze-string select="$theInput" regex="Length (\d+)"> <xsl:matching-substring> <p>Length: <xsl:value-of select="regex-group(1)"/></p> </xsl:matching-substring> </xsl:analyze-string> </xsl:template> </xsl:stylesheet>

Resultat:

<?xml version="1.0" encoding="UTF-8"?> <p>Length: 1150</p> <p>Length: 473</p>

Edit: Justeringar i xsl:en och utmatningen