/ Überprüfen Sie in xml mit xslt - xml, xslt, xslt-1.0

Bedingungsprüfung in XML mit xslt - xml, xslt, xslt-1.0

XML eingeben

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

Unten ist die Ausgabe-XML-Eingabe

<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 >

Leute vom Stapelüberlauf haben ihnen geholfen, wenn wir drei space-Knoten haben, bekommen wir die Ausgabe

Aber hier gibt es wieder eine kleine Wendung, wenn Sieschaue in den Grad Sr Ingenieur das wird in die Klasse kommen, aber der Code, den ich habe, wird SR in das Notenelement anzeigen und Ingenieur und 10 (Erfahrung) werden in das Erfahrungselement kommen.

Wenn es keinen Wert für Erfahrung gibt, hat es standardmäßig 10 angenommen.

In der obigen Eingabe-XML wird eine Anzahl von Mitarbeiterdetails angezeigt.

Hier ist der Link für das xslt

Bitte helfen Sie für die obige Frage

Danke im Voraus

Antworten:

1 für die Antwort № 1

Einblick in xsl:analyze-string http://www.w3.org/TR/xslt20/#analyze-string z.B. in Anlehnung an

<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>

Ungetestet, aber sollte Sie in die richtige Richtung weisen.


0 für die Antwort № 2

Maha, ich schlage vor, Sie googeln auf XSLT 1.0 String Funktionen. Diese Art von Problem ist wirklich trivial genug, dass Sie nicht in StackOverflow posten sollten. Ja, Sie mögen ein Anfänger sein, aber das hindert Sie nicht daran, Google zu benutzen.

Hier ein paar Startpunkte für Sie:

  1. Ansehen http://www.w3schools.com/xpath/xpath_functions.asp
  2. Beziehen Sie sich in Bezug auf Ihre spezielle Frage auf die Funktionen string-before () und string-after ()

0 für die Antwort № 3

Diese XSLT 1.0-Umwandlung:

<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>

Bei Anwendung auf das bereitgestellte XML-Dokument:

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

produziert das gewünschte, korrekte Ergebnis:

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