这是我在这里发表的第一篇文章,我希望有人能够帮助我,因为我一直在试图用我现有的XSL访问我的XML中的特定元素。我搜索过这个网站并且已经接近找到了答案,但它从来都不是我想要的。
我想要处理的新元素,理想情况下我希望能够在NOTE中引用'Label'来提取相应的值。例如,在下面的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>
任何帮助都会对此表示赞赏。
答案 0 :(得分:2)
如果我理解正确,您希望显示<NOTE Label="Unit">
的价值?
<TYREImport>
....
<UOM>
<xsl:value-of select="g:ANNOTATIONS/g:NOTE[@Label='Unit']" />
</UOM>
</TYREImport>