/ / проверка на състоянието в xml с помощта на xslt - xml, xslt, xslt-1.0

проверка на състоянието в xml с помощта на xslt - xml, xslt, xslt-1.0

XML вход

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

По-долу е XML изходен вход

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

Хората от препълването на стека, които са помогнали, ако имаме три обекта, които са спечелили, ще получим продукцията

Но тук отново има лек обратпогледнете в клас Sr Engineer това ще влезе в клас, но кодът, който имам ще покаже SR в класа елемент и инженер и 10 (опит) ще дойде в елемента Опит.

Ако няма стойност за Опитът, който по подразбиране е взел 10.

В горния XML вход ще има брой подробности за служителя, които ще дойде.

Ето връзката за този xslt

Моля, помогнете за горния въпрос

Благодаря предварително

Отговори:

1 за отговор № 1

Поглеждам в xsl:analyze-string http://www.w3.org/TR/xslt20/#analyze-string например по подобие на

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

Не тествана, но трябва да ви насочи в правилната посока.


0 за отговор № 2

Маха, предлагам ви google за XSLT 1.0 низови функции. Този вид проблем е наистина доста незначителен, че не трябва да публикувате в StackOverflow. Да, може да сте начинаещ, но това не ви пречи да използвате Google.

Ето няколко отправна точка за вас:

  1. Погледни http://www.w3schools.com/xpath/xpath_functions.asp
  2. Във връзка с вашия конкретен въпрос, помислете за функциите string-before () и string-after ()

0 за отговор № 3

Това преобразуване на 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>

когато се прилага върху предоставения XML документ:

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

произвежда желания, правилен резултат:

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