Microsoft Identity Integration Server 2003 Developer Reference |
This topic discusses how to use XSLT to view information in the XML that Microsoft Identity Integration Server 2003 can supply. This topic also explains how to use the .NET Framework classes to extract information from the XML that Microsoft Identity Integration Server 2003 can supply.
The following example shows how to view some of the elements in a CsExport XML file using XSLT. It displays the information for the <attr> elements with a displayName, employeeStatus, or employeeType attribute for any object in a <synchronized-hologram> section.
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html"/> <xsl:template match="/"> <TABLE border = "2" bgcolor="#FFFFFF"> <TR> <TH>Display Name</TH> <TH>Employee Status</TH> <TH>Employee Type</TH> </TR> <xsl:for-each select="/cs-objects/cs-object"> <xsl:variable name="object" select="."/> <TR> <xsl:for-each select="$object/synchronized-hologram/entry/attr"> <xsl:variable name="attribute" select="."/> <xsl:if test="$attribute/@name = 'displayName'"> <TD> <xsl:value-of select="$attribute/value"/> </TD> </xsl:if> <xsl:if test="$attribute/@name = 'employeeStatus'"> <TD> <xsl:value-of select="$attribute/value"/> </TD> </xsl:if> <xsl:if test="$attribute/@name = 'employeeType'"> <TD> <xsl:value-of select="$attribute/value"/> </TD> </xsl:if> </xsl:for-each> </TR> </xsl:for-each> </TABLE> </xsl:template> </xsl:stylesheet>
Note To make the previous XSLT work, you must insert the following lines into the XML file as the first lines, where CsExport.xsl is the name of the file containing the XSL commands:
<?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="CsExport.xsl"?>
The following code example in Visual Basic .NET shows how to extract some of the elements in a CsExport XML file. It displays the information for the <attr> elements with a displayName, employeeStatus, or employeeType attribute for any object in a <synchronized-hologram> section.
Imports System Imports System.IO Imports System.Text Imports System.Xml Module Module1 Sub Main() ' The hologram Dim sHologram As String = "cs-object/synchronized-hologram/" Dim DisplayName As String = sHologram + "entry/attr[@name='displayName']/value" Dim EmployeeStatus As String = sHologram + "entry/attr[@name='employeeStatus']/value" Dim EmployeeType As String = sHologram + "entry/attr[@name='employeeType']/value" Console.WriteLine("Enter the name of the XML file") filename = Console.ReadLine() Try Dim mySR As StreamReader = File.OpenText(filename) Dim reader As XmlTextReader = new XmlTextReader(mySR) Dim doc As XmlDocument = new XmlDocument() doc.Load(reader); dim attrNode As XmlNode attrNode = doc.DocumentElement.SelectSingleNode(DisplayName) If Not attrNode Is Nothing Then Console.WriteLine("DisplayName: " + attrNode.InnerText) End If attrNode = doc.DocumentElement.SelectSingleNode(EmployeeStatus) If Not attrNode Is Nothing Then Console.WriteLine("EmployeeStatus: " + attrNode.InnerText) End If attrNode = doc.DocumentElement.SelectSingleNode(EmployeeType) If Not attrNode Is Nothing Then Console.WriteLine("EmployeeType: " + attrNode.InnerText) End If Catch xe As XmlException Console.WriteLine("XML Exception: " + xe.Message) Catch fnfe As FileNotFoundException Console.WriteLine("Exception: " + fnfe.Message) End Try End Sub End Module
The following code example in C# shows how to extract some of the elements in a CsExport XML file. It displays the information for the <attr> elements with a displayName, employeeStatus, or employeeType attribute for any object in a <synchronized-hologram> section.
using System; using System.IO; using System.Text; using System.Xml; public class getAttr { [STAThread] static void Main(string[] args) { // The hologram string sHologram = "cs-object/synchronized-hologram/"; string DisplayName = sHologram + "entry/attr[@name='displayName']/value"; string EmployeeStatus = sHologram + "entry/attr[@name='employeeStatus']/value"; string EmployeeType = sHologram + "entry/attr[@name='employeeType']/value"; Console.WriteLine("Enter the name of the XML file"); String filename = Console.ReadLine(); try { StreamReader mySR = File.OpenText(filename); XmlTextReader reader = new XmlTextReader(mySR); XmlDocument doc = new XmlDocument(); doc.Load(reader); XmlNode attrNode; attrNode = doc.DocumentElement.SelectSingleNode(DisplayName); if(!(attrNode == null)) { Console.WriteLine("DisplayName: " + attrNode.InnerText); } attrNode = doc.DocumentElement.SelectSingleNode(EmployeeStatus); if(!(attrNode == null)) { Console.WriteLine("EmployeeStatus: " + attrNode.InnerText); } attrNode = doc.DocumentElement.SelectSingleNode(EmployeeType); if(!(attrNode == null)) { Console.WriteLine("EmployeeType: " + attrNode.InnerText); } } catch(XmlException xe) { Console.WriteLine("XML Exception: " + xe.Message); } catch(FileNotFoundException fnfe) { Console.WriteLine("Exception: " + fnfe.Message); } } } // To compile: csc /r:System.Xml.dll /out:getAttr.exe getAttr.cs