Subject: Re: [xsl] XSLT to populate a SAML AttributeStatement from an XML From: "Michael Kay michaelkay90@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 18 Jan 2023 19:03:31 -0000 |
Correction, I left out the second argument to tokenize(), which in your case should be ':'. Michael Kay > On 18 Jan 2023, at 18:56, Michael Kay michaelkay90@xxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > Are you able to use XSLT 2.0+ -- that gives you a tokenize() function which makes this far easier. > > In 2.0 it's essentially > > <xsl:template match="personnel/*"> > <saml:Attribute Name="{name()}" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> > <xsl:for-each select="tokenize(.)"> > <saml:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string"><xsl:value-of select="."/></saml:AttributeValue> > > Incidentally, there are no attributes in your input XML - it's all elements. > > Michael Kay > Saxonica > > >> On 18 Jan 2023, at 17:06, ohaya ohaya@xxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: >> >> [I originally sent this to the wrong email address... sorry!] >> >> Hi, >> >> I have an application where I am retrieving a number of attributes and values from a web service, in the form of an XML file, and I want to create and populate a SAML AttributeStatement from the attributes and values in that XML file. A couple of complications (to me): >> >> - The attribute names in the XML file are different than the corresponding attributes in the SAML AttributeStatement. >> - Some of the attributes are multi-valued: in the source XML file, the values are a colon-separated string (e.g. ab:cd:ef), but in the AttributeStatement, each value will be in separate <saml:Attribute> element. >> >> Here's an example source XML: >> >> <record> >> . >> . >> . >> <adrRecord> >> <PN_ID>1111111</PN_ID> >> <personnel> >> <ADM_ORG_CD>urn:NORM:DEPT</ADM_ORG_CD> >> <DOD_ASSOC_CD>urn:NORM:V01</DOD_ASSOC_CD> >> </personnel> >> </adrRecord> >> </record> >> >> and the AttributeStatement I want to transform the above to is something like: >> >> >> <saml:Attribute Name="MY_PN_ID" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> >> <saml:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">1111111</saml:AttributeValue> >> </saml:Attribute> >> >> >> <saml:Attribute Name="MY_ORG_CD" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> >> <saml:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">DEPT</saml:AttributeValue> >> <saml:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">urn</saml:AttributeValue> >> <saml:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">NORM</saml:AttributeValue> >> </saml:Attribute> >> >> >> <saml:Attribute Name="MY_ASSOC_CD" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> >> <saml:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">urn</saml:AttributeValue> >> <saml:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">NORM</saml:AttributeValue> >> <saml:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">V01</saml:AttributeValue> >> </saml:Attribute> >> >> </saml:AttributeStatement> >> >> Can someone suggest the best approach to do this? I actually would prefer to have a series of transforms to do this, rather than just a single XSLT, mainly so I can be able to see how things are working (or not working). >> >> Thanks, >> Jim
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XSLT to populate a SAML A, Michael Kay michaelk | Thread | Re: [xsl] XSLT to populate a SAML A, ohaya ohaya@xxxxxxxx |
Re: [xsl] XSLT to populate a SAML A, Michael Kay michaelk | Date | Re: [xsl] XSLT to populate a SAML A, ohaya ohaya@xxxxxxxx |
Month |