2014-10-17 49 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