Мне нужно создать XSLT-файл для преобразования входящего файла SAML в XML. Но мой файл преобразования не создает никакого вывода, и я не уверен, почему? Когда я пытаюсь подключить следующее к инструменту онлайн-трансляции и получить сообщение об ошибке «шаблон оценки ошибок в строке 5 в модуле»?XSLT transform file blank output
Входящие SAML:
<root>
<saml:Attribute Name="State" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
<saml:AttributeValue>OR</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="Pilot_Item" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
<saml:AttributeValue>Skateboard</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="UserType" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
<saml:AttributeValue>Broker</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="Pilot_Item" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
<saml:AttributeValue>HandGlider</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="State" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
<saml:AttributeValue>CA</saml:AttributeValue>
</saml:Attribute>
</root>
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="/">
<USERINFO>
<xsl:for-each select="//saml:Attribute[@Name='State']/saml:AttributeValue">
<xsl:element name="field">
<xsl:attribute name="name">State</xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="current()"/>
<xsl:if test="position()!=last()">,</xsl:if>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
<xsl:for-each select="//saml:Attribute[@Name='Pilot_Item']/saml:AttributeValue">
<xsl:element name="field">
<xsl:attribute name="name">Custom1</xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="current()"/>
<xsl:if test="position()!=last()">,</xsl:if>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
<xsl:for-each select="//saml:Attribute[@Name='UserType']/saml:AttributeValue">
<xsl:element name="field">
<xsl:attribute name="name">Group</xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="current()"/>
<xsl:if test="position()!=last()">,</xsl:if>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</USERINFO>
</xsl:template>
</xsl:stylesheet>
Требуемая мощность:
<UserInfo>
<Custom1>Skateboard,HandGlider</Custom1>
<State>CA,OR</State>
<Group>Broker</Group>
</UserInfo>
Ваш ввод неверно: префикс пространства имен 'saml' не определен. –
Кроме того, вы должны сообщить нам, можете ли вы использовать XSLT 2.0 или ограничены ли вы XSLT 1.0 –