这是美发的东西! :)
从以下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>
答案 0 :(得分:1)
除非我误解了你的问题,否则我相信你只是在寻找以下内容:
<xsl:value-of select="/MessageContent/AlarmingDevice/EncounterDeviceID"/>
<xsl:value-of select="/MessageContent/AlarmingDevice/cbrn:EncounterDeviceID2"/>
答案 1 :(得分: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标记中的命名空间定义以及节点名称前面的前缀。