无法使用XSL访问XML中的特定元素

时间:2014-01-02 12:10:22

标签: xml xslt

这是我在这里发表的第一篇文章,我希望有人能够帮助我,因为我一直在试图用我现有的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>

任何帮助都会对此表示赞赏。

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望显示<NOTE Label="Unit">的价值?

  <TYREImport>
     ....
     <UOM>
        <xsl:value-of select="g:ANNOTATIONS/g:NOTE[@Label='Unit']" />
     </UOM>
  </TYREImport>