0

这是美发的东西!:)

从以下 XML 文档中获取这两个节点值需要什么?

<?xml version="1.0" encoding="utf-8"?>
<AlarmSummaryMessage 
  xmlns:cbrn="http://www.site.com/cbrn" 
  xmlns:nc="http://www.site.com/nc" 
  xmlns:scr="http://www.site.com/src"
  xmlns="http://www.site.com/xmlns" xmlns:em="http://www.site.com/em">
  <MessageContent detectionEventKindCode="encounter">
    <AlarmingDevice>
      <EncounterDeviceID>Raid-WTC</EncounterDeviceID>
      <cbrn:EncounterDeviceID2>Raid-WTC</cbrn:EncounterDeviceID2>
    </AlarmingDevice>
  </MessageContent>
</AlarmSummaryMessage>

使用以下 XSLT:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="text" indent="no"/>

  <xsl:template match="MessageContent">
    <xsl:text>DEVICE: </xsl:text>
    <xsl:value-of select="AlarmingDevice/EncounterDeviceID/text()"/>
  </xsl:template>

  <xsl:template match="AlarmSummaryMessage">
    <xsl:apply-templates select="MessageContent" />         
  </xsl:template>
</xsl:stylesheet>
4

2 回答 2

1

除非我误解了您的问题,否则我相信您只是在寻找以下内容:

<xsl:value-of select="/MessageContent/AlarmingDevice/EncounterDeviceID"/>
<xsl:value-of select="/MessageContent/AlarmingDevice/cbrn:EncounterDeviceID2"/>
于 2013-06-19T18:55:45.160 回答
1

因为您的 XML 元素属于名称空间,所以您必须在 XSLT 中提及该名称空间 - 类似以下内容将帮助您入门:

<?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:tns="http://www.site.com/xmlns"
    xmlns:cbrn="http://www.site.com/cbrn">

        <xsl:output method="text" indent="no"/>

    <xsl:template match="tns:MessageContent" priority="2">
        <xsl:text>DEVICE:
        </xsl:text>
        <xsl:value-of select="tns:AlarmingDevice/tns:EncounterDeviceID"/>
        <xsl:text>; </xsl:text>
        <xsl:value-of select="tns:AlarmingDevice/cbrn:EncounterDeviceID2"/>
    </xsl:template>

    <xsl:template match="/tns:AlarmSummaryMessage" priority="1">
        <xsl:apply-templates select="tns:MessageContent" />         
    </xsl:template>
</xsl:stylesheet>

请注意 xsl:stylesheet 标记中的命名空间定义和节点名称前面的前缀。

于 2013-06-19T19:44:02.703 回答