Premiär! Fyndchans i SweClockers Månadens Drop

få ut specifik text ur xml (xls) fil

Permalänk
Medlem

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.

Visa signatur

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

Permalänk
Medlem

Ä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?

Permalänk
Medlem

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

Visa signatur

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

Permalänk
Medlem

<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.

Visa signatur

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

Permalänk
Medlem

Ä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'.

Permalänk
Medlem

jepps måtten anges alltid i millimeter.

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

Visa signatur

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

Permalänk
Medlem

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