magentoxsltsage-erp

'Select' 2 pieces of info (XSLT file)


I am trying to link our Magento website with Sage 50 with a piece of software.

We would like the customers first name and last name to go into the company field.

Below are the 3 lines I assume I have to tweak:

   <Forename><xsl:value-of select="billing_address/firstname"/></Forename>
    <Surname><xsl:value-of select="billing_address/lastname"/></Surname>
    <Company><xsl:value-of select="billing_address/company"/></Company>

How do I combine first name and last name in 1 line? looking for something like:

    <Company><xsl:value-of select="billing_address/firstname, billing_address/lastname"/></Company>

Solution

  • First of all, whitespace-only text nodes are ignored by the XSLT engine, so what you tried above can be rewritten like the following:

    <Company>
       <xsl:value-of select="billing_address/firstname, billing_address/lastname"/>
    </Company>
    

    Second, you have to understand that xsl:value-of generates a text node. The following will generate 2 text nodes, with resp. the first and last names:

    <Company>
       <xsl:value-of select="billing_address/firstname"/>
       <xsl:value-of select="billing_address/lastname"/>
    </Company>
    

    Then if I understand correctly, you want to seperate both with the string ", ". You can use xsl:text to generate a fixed-content text node:

    <Company>
       <xsl:value-of select="billing_address/firstname"/>
       <xsl:text>, </xsl:text>
       <xsl:value-of select="billing_address/lastname"/>
    </Company>
    

    In the above, you can put the ", " directly between both value-of, but then you can't control the indentation. Usuaully, when I generate fixed text, I always use xsl:text.