这是我在这里的第一篇文章,我希望有人能够帮助我,因为我多年来一直在绞尽脑汁试图使用我现有的 XSL 访问 XML 中的特定元素。我已经搜索了该网站并接近找到答案,但它从来都不是我想要的。
我尝试处理的新元素是,理想情况下,我希望能够引用NOTE中的"标签"以提取相应的值。例如,在下面的XML中,我希望能够提取KT的"单位"标签的值并将其存储在<UOM>
中。
XML 如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<TYRE xmlns="gapi-tyre-com" Action="Update">
<INSTSPECIFIER SEQ="10000"/>
<TERM Default="" Desc="" Label="Execution" Type="string">MTT</TERM>
<ANNOTATIONS>
<NOTE Label="CP">2013-12-03T15:38:48.931</NOTE>
<NOTE Label="CPR">UK</NOTE>
<NOTE Label="Unit">KT</NOTE>
<NOTE Label="UnitID">10000554</NOTE>
</ANNOTATIONS>
</TYRE>
我目前的 XSL 是:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Version 1.0.001 -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:g="gapi-tyre-com"
exclude-result-prefixes="g">
<xsl:output method="xml" indent="yes" doctype-public="importFile" doctype-system="importer.dtd"/>
<xsl:template match="/">
<xsl:element name="importFile">
<xsl:attribute name="source">T</xsl:attribute>
<xsl:attribute name="template">default</xsl:attribute>
<xsl:apply-templates select="g:TYRE"/>
</xsl:element>
</xsl:template>
<xsl:template match="g:TYRE">
<TYREImport>
<xsl:choose>
<xsl:when test="@Action = 'Remove'">
<audit>DELETE</audit>
</xsl:when>
<xsl:otherwise>
<audit>NEW</audit>
</xsl:otherwise>
</xsl:choose>
<type>F</type>
<period>H</period>
<ABCD>D</ABCD>
<TYREtype2>P</TYREtype2>
<mt>F</mt>
<memo1> MTT , <xsl:value-of select="g:INSTSPECIFIER/@SEQ"/></memo1>
</TYREImport>
</xsl:template>
</xsl:stylesheet>
任何帮助将不胜感激。
如果我理解正确,您想显示<NOTE Label="Unit">
的价值?
<TYREImport>
....
<UOM>
<xsl:value-of select="g:ANNOTATIONS/g:NOTE[@Label='Unit']" />
</UOM>
</TYREImport>