juls_pro_37: XSLT 1.0 Copy-of mehrerer Nodes inkl. Zeilenumbruch

Hi,

ich würde gerne prüfen, ob unter "Contact_DP" der Unterpunkt "Mail" befüllt ist, wenn ja soll unter "DeliveryAddressInformation/Street" der vorhandene Wert inkl. "Contact_DP/Mail" und Zeilenumbruch ausgegeben werden.

<?xml version="1.0"?>
<SALESORDER>
    <Interchange>
		<HeaderInformation>
			<DeliveryAddressInformation>				
				<Street>Test-Str. 8    			   
				</Street>			
				<Contact_DP>
                    <Name>Test</Name>
					<Mail>e-business@bahag.com</Mail>
				</Contact_DP>
			</DeliveryAddressInformation>
			<LineItem>
				<Line>10</Line>
			</LineItem>
		</HeaderInformation>
	</Interchange>
</SALESORDER>

Korrekt:

<?xml version="1.0"?>
<SALESORDER>
    <Interchange>
		<HeaderInformation>
			<DeliveryAddressInformation>				
				<Street>Test-Str. 8 
                        Test
                        e-business@bahag.com
				</Street>			
				<Contact_DP>
                    <Name>Test</Name>
					<Mail>e-business@bahag.com</Mail>
				</Contact_DP>
			</DeliveryAddressInformation>
			<LineItem>
				<Line>10</Line>
			</LineItem>
		</HeaderInformation>
	</Interchange>
</SALESORDER>

Hätte zB folg. versucht:

<xsl:value-of select="concat(./DeliveryAddressInformation/Street, <xsl:text>&#10;</xsl:text>, ./DeliveryAddressInformation/Name)"/>

Danke & LG Julian

akzeptierte Antworten

  1. Hallo Julian,

    Hätte zB folg. versucht:

    <xsl:value-of select="concat(./DeliveryAddressInformation/Street, <xsl:text>&#10;</xsl:text>, ./DeliveryAddressInformation/Name)"/>
    

    Man kann kein Element (hier xsl:text) in einem Attribut (hier select) eröffnen. Der Zeilenumbruch kann direkt in der concat()-Funktion als '&#10;' bzw. '&#xA;' stehen.

    Aber: welchen Vorteil soll das haben, wenn man das Ergebnis-XML noch weiterverarbeiten müsste? Ein neues Kindelement fände ich plausibler.

    Grüße,
    Thomas

    1. In diese Richtung?

                      <Street>
                          <xsl:value-of select="./DeliveryAddressInformation/Street" />
                          <xsl:text>&#10;</xsl:text>
                              <xsl:value-of select="./DeliveryAddressInformation/Name" />
                      </Street>
      

      thx

      lg Julian

      1. Hallo Julian,

        In diese Richtung?

        <Street>
         <xsl:value-of select="./DeliveryAddressInformation/Street" />
         <xsl:text>&#10;</xsl:text>
         <xsl:value-of select="./DeliveryAddressInformation/Name" />
        </Street>
        

        Ich weiß ja nicht, was rauskommen soll. Das ergibt:

        <Street>Inhalt  
        Inhalt
        </Street>
        

        Analog zu:

        <Street>
          <xsl:value-of select="concat(./DeliveryAddressInformation/Street, '&#10;', ./DeliveryAddressInformation/Name)"/>
        </Street>
        

        Grüße,
        Thomas

        1. wie immer DANKE!!! :) so ists schöner..