從傳入SAML響應:XSLT創建逗號分隔的列表
<saml2:Attribute Name="FirstName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Joe</saml2:AttributeValue>
</saml2:Attribute>
代碼從XSLT轉換文件:
<field name="FirstName" value="{//saml:Attribute[@Name='FirstName']/saml:AttributeValue}"/>
產生這樣的輸出:
<field name="FirstName" value="Joe"/>
這是正常工作。但一個指定的節點可以有多個值,如:
<saml2:Attribute Name="FirstName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Joe</saml2:AttributeValue>
<saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Suzy</saml2:AttributeValue>
</saml2:Attribute>
而且我需要的輸出爲:
<field name="FirstName" value="Joe,Suzy"/>
什麼我需要在我的轉換文件更改爲得到這個期望的輸出?
UPDATE
我能得到現在利用「小桑蒂」的建議,下面的輸出,但我似乎無法得到逗號分隔符的工作。不確定將文件添加到文檔中的位置?
<field name="FirstName" value="JoeSuzy"/>
下面是引用完整的XSLT文件:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<xsl:template match="/">
<AUTHENTICATOR>
<USERINFO>
<field name="FirstName">
<xsl:attribute name="value">
<xsl:apply-templates select="//saml:Attribute[@Name='FirstName']/saml:AttributeValue"></xsl:apply-templates>
</xsl:attribute>
</field>
</USERINFO>
</AUTHENTICATOR>
</xsl:template>
</xsl:stylesheet>
您使用的是XSLT 1.0還是2.0? - P.S.請發佈**完整的**示例,而不是從他們的上下文中刪除片段。 –