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

  • 本文关键字:元素 XML 访问 XSL xml xslt
  • 更新时间 :
  • 英文 :


这是我在这里的第一篇文章,我希望有人能够帮助我,因为我多年来一直在绞尽脑汁试图使用我现有的 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>