個々のレコードがそれであるか、<Student>
または<teacher>
入力 XML :
<staff>
<record>
<Student>
<field name="LastName">Dtext</field>
<field name="FirstName"></field>
<field name="Class">5</field>
<field name="Email">Dtext-user33@nova.com</field>
</Student>
</record>
<record>
<Student>
....
</Student>
</record>
<record>
<Teacher>
<field name="LastName">Dtext-user35</field>
<field name="FirstName"></field>
<field name="Email">Dtext-user35@nova.com</field>
<field name="Experience">10</field>
<field name="Qualification"></field>
</Teacher>
</record>
....
....
出力xml:
<input>
<add user="Student" >
<add-value value-name="LastName">
<value type="string">Dtext</value>
</add-value>
<add-value value-name="FirstName">
<value type="string"></value>
</add-value>
<add-value value-name="class">
<value type="string">5</value>
</add-value>
<add-value value-name="Email">
<value type="string">Dtext-user33@novell.com</value>
</add-value>
</add>
また
<input>
<add user="Teacher" >
<add-value value-name="LastName">
<value type="string">Dtext-user35</value>
</add-value>
....
以下は、現在作業中のコードのスニペットです。何らかの理由でこれが機能しません。
<xsl:template match="/">
<xsl:choose>
<xsl:when test="staff">
<xsl:for-each select="staff/record">
<xsl:when test="name(./*[1])= 'Student'">
<xsl:apply-template select = "Student"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-template select = "Teacher">
</xsl:otherwise>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="Student">
<input>
<add user="Student">
<xsl:for-each select="field[string()]">
<xsl:variable name="fieldValue" select="normalize-space(.)"/>
<add-value value-name="{@name}">
<value type="string">
<xsl:value-of select="$fieldValue"/>
</value>
</add-value>
</xsl:for-each>
</add>
</input>
</xsl:template>
</xsl:stylesheet>
<xsl:template match="Teacher">
<input>
<add user="Teacher">
<xsl:for-each select="field[string()]">
<xsl:variable name="fieldValue" select="normalize-space(.)"/>
<add-value value-name="{@name}">
<value type="string">
<xsl:value-of select="$fieldValue"/>
</value>
</add-value>
</xsl:for-each>
</add>
</input>
</xsl:template>
</xsl:stylesheet>
それが機能するには、コードにどのような修正が必要ですか..?
編集:私のコードで行われたすべてのばかげた間違いを修正しました.しかし、出力に関する限り、まだ運がありません.