/ / condition checking in xml usando xslt - xml, xslt, xslt-1.0

verifica delle condizioni in xml usando xslt - xml, xslt, xslt-1.0

Input XML

<Employer>
<Employeedetail>Sam SR Engineer 10%</ Employeedetail >
<Employeedetail>Sam SR 10%</ Employeedetail >
<Employeedetail>Sam SR</ Employeedetail >
</ Employer >

Di seguito è riportato l'XML di input di output

<Employer>
< Employeedetails >
< Employeedetail1>
< Employeedetail >
<Name>Sam</ Name >
<Grade> SR Engineer </ Grade >
<Experience>10</ Experience >
</ Employeedetail >
</ Employeedetail1>
</ Employeedetails>
</ Employer >

<Employer>
< Employeedetails >
< Employeedetail1>
< Employeedetail >
<Name>Sam</ Name >
<Grade>SR</ Grade >
<Experience>10</ Experience >
</ Employeedetail >
</ Employeedetail1>
</ Employeedetails>
</ Employer >

<Employer>
< Employeedetails >
< Employeedetail1>
< Employeedetail >
<Name>Sam</ Name >
<Grade>SR</ Grade >
<Experience>10</ Experience >
</ Employeedetail >
</ Employeedetail1>
</ Employeedetails>
</ Employer >

Le persone provenienti dall'eccesso di stack hanno aiutato se avessimo tre nodi sperati nello spazio otterremo l'output

Ma qui c'è una leggera svolta di nuovo se tuguarda nel grado Sr Engineer questo entrerà nel grado, ma il codice che ho mostrerà SR nell'elemento Grade e Engineer e 10 (Experience) entreranno nell'elemento Experience.

Se non c'è alcun valore per Esperienza che ha assunto di default 10.

Nel codice XML di input sopra riportato ci sarà il numero di dettagli dei dipendenti che arriverà.

Ecco il link per questo xslt

Si prega di aiuto per la domanda di cui sopra

Grazie in anticipo

risposte:

1 per risposta № 1

Guardare dentro xsl:analyze-string http://www.w3.org/TR/xslt20/#analyze-string per esempio. lungo le linee di

<xsl:template match="Employeedetail">
<Employeedetail>
<xsl:analyze-string="." regex="(w+)s+(w+(sw+)?)s+(d+)">
<xsl:matching-substring>
<Name><xsl:value-of select="regex-group(1)"/></Name>
<Grade><xsl:value-of select="regex-group(2)"/></Grade>
<Experience><xsl:value-of select="regex-group(4)"/></Experience>
</xsl:matching-substring>
</xsl:analyze-string>
</Employeedetail>
</xsl:template>

Non testato, ma dovrebbe indirizzarti nella giusta direzione.


0 per risposta № 2

Maha, ti consiglio google su XSLT 1.0 funzioni di stringa. Questo tipo di problema è davvero banale e non dovresti postare in StackOverflow. Sì, potresti essere un principiante, ma questo non ti impedisce di usare Google.

Ecco un paio di punti di partenza per te:

  1. Guarda a http://www.w3schools.com/xpath/xpath_functions.asp
  2. In relazione alla tua particolare domanda, considera le funzioni string-before () e string-after ()

0 per risposta № 3

Questa trasformazione XSLT 1.0:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="Employeedetail">
<xsl:variable name="vExp" select=
"substring(., string-length()-2, 2)"/>
<Employer>
<Employeedetails>
<Employeedetail1>
<Employeedetail>
<name><xsl:value-of select="substring-before(., " ")"/></name>
<grade>
<xsl:value-of select=
"substring-before(substring-after(., " "), $vExp)"/>
</grade>
<experience><xsl:value-of select="$vExp"/></experience>
</Employeedetail>
</Employeedetail1>
</Employeedetails>
</Employer>
</xsl:template>
</xsl:stylesheet>

se applicato sul documento XML fornito:

<Employer>
<Employeedetail>Sam SR Engineer 10%</Employeedetail>
</Employer>

produce il risultato desiderato e corretto:

<Employer>
<Employeedetails>
<Employeedetail1>
<Employeedetail>
<name>Sam</name>
<grade>SR Engineer </grade>
<experience>10</experience>
</Employeedetail>
</Employeedetail1>
</Employeedetails>
</Employer>