Avatar billede mungojerrie Nybegynder
19. april 2005 - 22:04 Der er 4 kommentarer og
1 løsning

Rookie fejl mht absolut sti til node

Hej

Det er vist en rookie fejl jeg har.....jeg får ikke rigtigt nogen data retur under "<xsl:template match="com:InvoiceLine">"
Stien er ellers korrekt, men nok skrevet forkert.......

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:main="http://rep.oio.dk/ubl/xml/schemas/0p71/maindoc/"
xmlns:com="http://rep.oio.dk/ubl/xml/schemas/0p71/common/"
xmlns:pie="http://rep.oio.dk/ubl/xml/schemas/0p71/pie/"
xmlns:tpcm="http://rep.oio.dk/ubl/xml/schemas/0p71/testpcm/"
xmlns:tpie="http://rep.oio.dk/ubl/xml/schemas/0p71/testpie/"
xmlns:pcm="http://rep.oio.dk/ubl/xml/schemas/0p71/pcm/"
>
<xsl:output method="text" encoding="utf-8" indent="yes"/>

<xsl:template match="/">
  <xsl:apply-templates select="/*[local-name()='Invoice']"/>
</xsl:template>

<xsl:template match="pie:Invoice|pcm:Invoice|tpcm:Invoice|pie:Invoice">
    <xsl:text>H01</xsl:text>
    <xsl:apply-templates select="com:TypeCode"/>
    <xsl:apply-templates select="com:ID"/>
    <xsl:apply-templates select="//com:BuyerParty[1]/com:AccountCode"/>
    <xsl:apply-templates select="com:IssueDate"/>
    <xsl:text>&#xA;</xsl:text>
    <xsl:apply-templates select="com:InvoiceLine"/>
    <xsl:apply-templates select="com:LegalTotals"/>
</xsl:template>


<xsl:template match="com:InvoiceLine">
    <xsl:text>L01</xsl:text>
    <!-- VarenummerArt-->
    <xsl:variable name="varenummerart"><xsl:value-of select="/com:InvoiceLine/com:Item/com:SellersItemIdentification"/></xsl:variable>
    <xsl:value-of select="format-number($varenummerart,'00')" />
    <!-- Varenummer -->
    <xsl:variable name="varenummer"><xsl:value-of select="/com:InvoiceLine/com:ReferencedOrderLine/Item/com:ID"/></xsl:variable>
    <xsl:value-of select="substring(concat($varenummer, '                    '), 1, 20)" />
    <xsl:text>&#xA;</xsl:text>
</xsl:template>
Avatar billede Slettet bruger
19. april 2005 - 22:29 #1
Jep - dine variabler leder efter rodelementet <com:InvoiceLine> (de starter med een forwardslash) - husk at du indeni en template eller en for-each kan referere til childnodes direkte - desuden kan du bruge select direkte i en variable; altså:

<xsl:variable name="varenummerart" select="com:Item/com:SellersItemIdentification" />

og:
<xsl:variable name="varenummer" select="com:ReferencedOrderLine/Item/com:ID" />

/CS
Avatar billede mungojerrie Nybegynder
20. april 2005 - 08:53 #2
endnu engang har du reddet mig :-)

Jeg kom dog lige til at tænke på om det er muligt at referere direkte til min node i stedet for at danne en variable først.....

<xsl:value-of select="format-number($varenummerart,'00')" />
altså udskifte $varenummerart med referencen til com:SellersItemIdentification/com:ID
Avatar billede Slettet bruger
20. april 2005 - 12:19 #3
Det kan du sagtens ja. (Men det har du vel allerede afprøvet :-)

/CS
Avatar billede mungojerrie Nybegynder
20. april 2005 - 12:22 #4
hehe, ja, jeg har forsøgt, men får det ikke skrevet korrekt.....så hvis du har et eksempel så!! :-)
Avatar billede Slettet bruger
20. april 2005 - 13:25 #5
OK - det burde så være noget i stil med:

<xsl:template match="com:InvoiceLine">
    <xsl:text>L01</xsl:text>
    <xsl:value-of select="format-number(com:Item/com:SellersItemIdentification, '00')" />
    <xsl:value-of select="substring(concat(com:ReferencedOrderLine/Item/com:ID, '                    '), 1, 20)" />
    <xsl:text>&#xA;</xsl:text>
</xsl:template>

- eller ligefrem:

<xsl:template match="com:InvoiceLine">
<xsl:value-of select="concat('L01', format-number(com:Item/com:SellersItemIdentification, '00'), substring(concat(com:ReferencedOrderLine/Item/com:ID, '                    '), 1, 20), '&#xA;')" />
</xsl:template>

/CS
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