[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Multi-Line Elements
> <billing_address>123 Any Pl. > Suite 5 > Thisplace, AB > 12345 > Attn: John</billing_address> > > that needs to parsed into individual lines during output. <!-- The better solution, as pointed out previously, would be to adjust your DTD such that the meaningful units of data exist as separate elements. But if you insist... --> <!-- If your XSLT processor implements the right functions, and if you don't mind doing this as many times as you expect to see newline characters in the input, you can do it like this. Or, you could make this into a named template that accepts a line number on input and then recursively calls itself that many times to return the result. --> <!-- put the text into a variable so it is easier to work with --> <xsl:variable name="All" select="billing_address"/> <!-- $Line_1 = what comes before first newline --> <xsl:variable name="Line_1" select="substring-before($All,'
')"/> <!-- $The_Rest = what comes after first newline --> <xsl:variable name="The_Rest" select="substring-after($All,'
')"/> <!-- $Line_2 = what comes before first newline in $The_Rest, or just $The_Rest if there is no newline --> <xsl:variable name="Line_2"> <xsl:choose> <xsl:when test="contains($The_Rest,'
')"> <xsl:value-of select="substring-before($The_Rest,'
')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$The_Rest"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <!-- reassign $The_Rest safely --> <xsl:variable name="TEMP_The_Rest" select="substring-after($The_Rest,'
')"/> <xsl:variable name="The_Rest" select="$TEMP_The_Rest"/> <!-- do subsequent lines just like $Line_2 --> <xsl:variable name="Line_3"> <xsl:choose> <xsl:when test="contains($The_Rest,'
')"> <xsl:value-of select="substring-before($The_Rest,'
')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$The_Rest"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="TEMP_The_Rest" select="substring-after($The_Rest,'
')"/> <xsl:variable name="The_Rest" select="$TEMP_The_Rest"/> <xsl:variable name="Line_4"> <xsl:choose> <xsl:when test="contains($The_Rest,'
')"> <xsl:value-of select="substring-before($The_Rest,'
')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$The_Rest"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="TEMP_The_Rest" select="substring-after($The_Rest,'
')"/> <xsl:variable name="The_Rest" select="$TEMP_The_Rest"/> <xsl:variable name="Line_5"> <xsl:choose> <xsl:when test="contains($The_Rest,'
')"> <xsl:value-of select="substring-before($The_Rest,'
')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$The_Rest"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="TEMP_The_Rest" select="substring-after($The_Rest,'
')"/> <xsl:variable name="The_Rest" select="$TEMP_The_Rest"/> <xsl:variable name="Line_6"> <xsl:choose> <xsl:when test="contains($The_Rest,'
')"> <xsl:value-of select="substring-before($The_Rest,'
')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$The_Rest"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="TEMP_The_Rest" select="substring-after($The_Rest,'
')"/> <xsl:variable name="The_Rest" select="$TEMP_The_Rest"/> <!-- and so on. --> <!-- If there aren't enough newlines in the input, you'll start getting empty strings, but that should be all right; you can test for them. --> <!-- display each line in curly braces --> <xsl:text>{</xsl:text> <xsl:value-of select="$Line_1"/> <xsl:text>}</xsl:text> <xsl:text>{</xsl:text> <xsl:value-of select="$Line_2"/> <xsl:text>}</xsl:text> <xsl:text>{</xsl:text> <xsl:value-of select="$Line_3"/> <xsl:text>}</xsl:text> <xsl:text>{</xsl:text> <xsl:value-of select="$Line_4"/> <xsl:text>}</xsl:text> <xsl:text>{</xsl:text> <xsl:value-of select="$Line_5"/> <xsl:text>}</xsl:text> <xsl:text>{</xsl:text> <xsl:value-of select="$Line_6"/> <xsl:text>}</xsl:text> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|