2017-07-13 2 views
0

Je dois diviser la chaîne avec la coma et afficher quelque chose comme ci-dessous.Comment diviser une chaîne aléatoire avec la virgule (,) dans XSLT 1.0

input 1: 
<xsl:variable name="weekdays" select="sunday,tuesday,wednesday"> 

input 2: 
<xsl:variable name="weekdays" select="sunday,thursday,friday,saturday"> 

Les entrées peuvent contenir des jours de la semaine aléatoires. J'ai besoin de quelque chose comme ci-dessous.

output 1: 
<weekday> 
sunday 
Tuesday 
wednesday 
</weekday> 

output 2: 
<weekday> 
sunday 
Thursday 
Friday 
Saturday 
</weekday> 

Quelqu'un peut-il aider à ce sujet.

+1

Si votre variable contient une chaîne, vous pouvez obtenir le résultat souhaité simplement en traduisant les virgules en ligne alimente. Cependant, '' n'est pas une syntaxe valide. –

+0

La plupart des processeurs xslt-1.0 prennent en charge les extensions, par exemple, exslt: http://exslt.org/str/functions/split/index.html. – newtover

Répondre

0

Pour ce faire, votre XML d'entrée doit contenir les valeurs séparées comma dans l'un des éléments ou vous devrez préparer la valeur de <xsl:variable> en conséquence. La syntaxe pour <xsl:variable> indiquée dans votre question est incorrecte.

XML d'entrée

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<weekdays>Sunday,Tuesday,Wednesday</weekdays> 

Dans le XSL, vous pouvez utiliser une variable pour maintenir la valeur de l'élément et utilisez la fonction translate pour remplacer le comma avec les newline caractères.

Transformation XSL

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" /> 
    <xsl:strip-space elements="*" /> 
    <xsl:variable name="weekday-names" select="weekdays" /> 
    <xsl:template match="/"> 
     <output> 
      <xsl:value-of select="translate($weekday-names,',','&#xA;')" /> 
     </output> 
    </xsl:template> 
</xsl:stylesheet> 

XML de sortie

<?xml version="1.0" encoding="UTF-8"?> 
<output>Sunday 
    Tuesday 
    Wednesday 
</output>