2014-10-17 50 views
0

我一直試圖循環具有名稱空間的XML的屬性,有時候我能夠使用名稱空間獲取元素,但現在我很難通過屬性循環。xslt循環使用名稱空間的屬性

我找到的所有例子都沒有命名空間。

這是我到目前爲止有:

XSLT:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:x="TransactionDataOfRequest"> 
    <xsl:output method="text" indent="no"/> 
    <xsl:output omit-xml-declaration="yes" encoding="UTF-8"/> 
    <xsl:strip-space elements="*"/> 
    <xsl:template match="/"> 

    <xsl:for-each select="//x:form"> 
     <xsl:value-of select="//x:name"/> 
    </xsl:for-each> 

    </xsl:template> 

    <xsl:template match="/"> 

    <xsl:copy-of select="//x:request"/> 
    <xsl:text>&#10;</xsl:text> 
    <!-- newline character --> 
    <xsl:value-of select="//x:qform"/> 
    </xsl:template> 
</xsl:stylesheet> 

XML:

<?xml version="1.0" encoding="iso-8859-1"?> 
<transaction xmlns="TransactionDataOfRequest" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <success>true</success> 
    <code>0</code> 
    <value> 
    <request>INC000158</request> 
</descript> 
    <qform>Save</qform> 
    <form> 
     <add name="ADM_1" title="B" type="String" isList="false">Americana</add> 
     <add name="ADM_2" title="Question?" type="String" isList="false">No</add> 
     <add name="ADM_3" title="State" type="String" isList="false">ss</add> 
    </form> 
    </value> 
</transaction> 

回答

1

xmlns="TransactionDataOfRequest"默認命名空間聲明僅適用於元素節點,而不是屬性節點。因此,您只需選擇一個屬性即可。 //x:form/x:add/@title

+0

謝謝馬丁!我很難找到我錯在哪裏。 – 2014-10-17 14:21:44