[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Sorting attributes with XSL - Is there a way to "grep" and m

Subject: Sorting attributes with XSL - Is there a way to "grep" and match on partial attribute string value?
From: XSL Mailing List <xsl@xxxxxxxxxxxxxxxxxxx>
Date: 22 Sep 1999 15:21:20 -0700
obx font
I want to match attribute string value for HL71A/MSH/PID/@Name NOT as exact match as follows:

<xsl:apply-templates select="HL7A1/MSH/PID[@Name = 'Donneley^Floyd']" order-by = "+@Name" />

Instead, what I want to do is sort @Name and match for all @Name attribute values where @Name starts with D or d (or any other letter) and would retrieve all attribute values which start with D or and then populate the table.

Any suggestions?? HELP!!



I have the following XML file: (XSL file below the XML)

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="19990917_Batch_File_XML_HL7_mod_20_Donneley^Floyd.xsl"?>
<HL7A1>
<MSH Origin='labtstn' Dest='cabtstn' TStamp='93000000' Type='ORU'
     Id='57922001'>
<PID Id='22392248' ExtId='111222333' Name='Smith^Jane'
     DOB='19170615' Sex='F'>
<OBR Id='22392248' PlacerId='222333444-1' TStamps='9300001'>
<USID Id='7010'>COMPLETE BLOOD COUNT</USID>
<OBX  TStamp='9300001'>
<USID Id='5101'>REMARKS</USID>
<OBX-VAL>DNR</OBX-VAL>
</OBX>
<OBX  TStamp='9300001'>
<USID Id='5147'>MEAN PLATELET VOLUME</USID>
<OBX-VAL Units='fL'>9.3</OBX-VAL>
</OBX>
</OBR>
<OBR Id='22392248' PlacerId='222333444-2' TStamps='9300001'>
<USID Id='7069'>GENERAL SURVEY PROFILE</USID>
<OBX TStamp='9300001'>
<USID Id='1104'>GLUCOSE</USID>
<OBX-VAL Units='mG/dL' RefRange='7-22'>77</OBX-VAL>
<OBX-NOTE>GLUCOSE TEST
</OBX-NOTE>
</OBX>
<OBX TStamp='9300001'>
<USID Id='1137'>CALCIUM</USID>
<OBX-VAL Units='mG/dL' RefRange='2.5-4.5'>9.4</OBX-VAL>
<OBX-NOTE>Please note change in reference range effective 05/04/1998.
</OBX-NOTE>
</OBX>
</OBR>
</PID>
<MSH-RAW><![CDATA[
MSH|^`\&||labtstn||cabtstn|199908020046||ORU|57922001|D|2.2
PID|1|111222333|22392248||Smith^Jane||19170615|M
OBR|1|222333444-1|22392248|7010^COMPLETE BLOOD COUNT^LOCAL|||19980529|||||||199805292311||1352||
OBX|1|ST|5101^REMARKS^LOCAL||DNR||||||F|||199908020046
OBX|2|ST|5147^MEAN PLATELET VOLUME^LOCAL||9.3|fL|||||F|||199908020046
OBR|2|222333444-2|22392248|7069^GENERAL SURVEY PROFILE^LOCAL|||19980529|||||||199805292311||1352||
OBX|1|ST|1104^GLUCOSE^LOCAL||77|mG/dL|7-22||||F|||199908020046
OBX|2|ST|1137^CALCIUM^LOCAL||9.4|mG/dL|2.5-4.5||||F|||199908020046
NTE|1||     Please note change in reference range effective 05/04/1998.
NTE|2||
]]>
</MSH-RAW>
</MSH>
<MSH Origin='labtstn' Dest='cabtstn' TStamp='93000000' Type='ORU'
     Id='57922002'>
<PID Id='11248756' ExtId='444555666' Name='Johnson^Susan'
     DOB='19580407' Sex='F'>
<OBR Id='11248756' PlacerId='222333555-1' TStamps='9300001'>
<USID Id='2505'>THYROXINE, TOTAL (T4)</USID>
<USID Coding='LOINC' Id='3062-2'></USID>
<OBX TStamp='9300001'>
<USID Id='2505'>THYROXINE, TOTAL (T4)</USID>
<OBX-VAL Units='uG/dL' RefRange='27-40'>9.9</OBX-VAL>
</OBX>
</OBR>
<OBR Id='11248756' PlacerId='222333555-2' TStamps='9300001'>
<USID Id='2511'>T3 UPTAKE (T3U)</USID>
<USID Coding='LOINC' Id='3050-2'></USID>
<OBX TStamp='9300001'>
<USID Id='2511'>T3 UPTAKE (T3U)</USID>
<OBX-VAL Units='%' RefRange='27-40'>37</OBX-VAL>
</OBX>
</OBR>
</PID>
<MSH-RAW><![CDATA[
MSH|^`\&||labtstn||cabtstn1|199908020046||ORU|57922001|D|2.2
PID|2|444555666|11248756||Johnson^Susan||19580407|F
OBR|1|222333555-1|11248756|2505^THYROXINE, TOTAL (T4)^LOCAL^3062-2^^LOINC|||19950511|||||||199505112034||1728||
OBX|1|ST|2505^THYROXINE, TOTAL (T4)^LOCAL||9.9|uG/dL|27-40||||F|||199908020046
OBR|2|222333555-2|11248756|2511^T3 UPTAKE (T3U)^LOCAL^3050-2^^LOINC|||19950511|||||||199505112034||1728||
OBX|1|ST|2511^T3 UPTAKE (T3U)^LOCAL||37|%|27-40||||F|||199908020046
]]>
</MSH-RAW>
</MSH>

<MSH Origin='labtstn' Dest='cabtstn' TStamp='93000000' Type='ORU'
     Id='57922001'>
<PID Id='22392248' ExtId='111222333' Name='James^Robert'
     DOB='19530615' Sex='M'>
<OBR Id='11248756' PlacerId='222333555-1' TStamps='9300001'>
<USID Id='2505'>THYROXINE, TOTAL (T4)</USID>
<USID Coding='LOINC' Id='3062-2'></USID>
<OBX TStamp='9300001'>
<USID Id='2505'>THYROXINE, TOTAL (T4)</USID>
<OBX-VAL Units='uG/dL' RefRange='27-40'>9.9</OBX-VAL>
</OBX>
</OBR>
<OBR Id='11248756' PlacerId='222333555-2' TStamps='9300001'>
<USID Id='2511'>T3 UPTAKE (T3U)</USID>
<USID Coding='LOINC' Id='3050-2'></USID>
<OBX TStamp='9300001'>
<USID Id='2511'>T3 UPTAKE (T3U)</USID>
<OBX-VAL Units='%' RefRange='27-40'>37</OBX-VAL>
</OBX>
</OBR>
<OBR Id='22392248' PlacerId='222333444-1' TStamps='9300001'>
<USID Id='7010'>COMPLETE BLOOD COUNT</USID>
<OBX  TStamp='9300001'>
<USID Id='5101'>REMARKS</USID>
<OBX-VAL>DNR</OBX-VAL>
</OBX>
<OBX  TStamp='9300001'>
<USID Id='5147'>MEAN PLATELET VOLUME</USID>
<OBX-VAL Units='fL'>9.3</OBX-VAL>
</OBX>
</OBR>
<OBR Id='22392248' PlacerId='222333444-2' TStamps='9300001'>
<USID Id='7069'>GENERAL SURVEY PROFILE</USID>
<OBX TStamp='9300001'>
<USID Id='1104'>GLUCOSE</USID>
<OBX-VAL Units='mG/dL' RefRange='7-22'>77</OBX-VAL>
<OBX-NOTE>GLUCOSE TEST
</OBX-NOTE>
</OBX>
<OBX TStamp='9300001'>
<USID Id='1137'>CALCIUM</USID>
<OBX-VAL Units='mG/dL' RefRange='2.5-4.5'>9.4</OBX-VAL>
<OBX-NOTE>Please note change in reference range effective 05/04/1998.
</OBX-NOTE>
</OBX>
</OBR>
</PID>
<MSH-RAW><![CDATA[
MSH|^`\&||labtstn||cabtstn|199908020046||ORU|57922001|D|2.2
PID|1|111222333|22392248||Smith^Jane||19170615|M
OBR|1|222333444-1|22392248|7010^COMPLETE BLOOD COUNT^LOCAL|||19980529|||||||199805292311||1352||
OBX|1|ST|5101^REMARKS^LOCAL||DNR||||||F|||199908020046
OBX|2|ST|5147^MEAN PLATELET VOLUME^LOCAL||9.3|fL|||||F|||199908020046
OBR|2|222333444-2|22392248|7069^GENERAL SURVEY PROFILE^LOCAL|||19980529|||||||199805292311||1352||
OBX|1|ST|1104^GLUCOSE^LOCAL||77|mG/dL|7-22||||F|||199908020046
OBX|2|ST|1137^CALCIUM^LOCAL||9.4|mG/dL|2.5-4.5||||F|||199908020046
NTE|1||     Please note change in reference range effective 05/04/1998.
NTE|2||
]]>
</MSH-RAW>
</MSH>

<MSH Origin='labtstn' Dest='cabtstn' TStamp='93000000' Type='ORU'
     Id='57922001'>
<PID Id='22392248' ExtId='111222333' Name='Donneley^Floyd'
     DOB='19620705' Sex='M'>
<OBR Id='22392248' PlacerId='222333444-1' TStamps='9300001'>
<USID Id='7010'>COMPLETE BLOOD COUNT</USID>
<OBX  TStamp='9300001'>
<USID Id='5101'>REMARKS</USID>
<OBX-VAL>DNR</OBX-VAL>
</OBX>
<OBX  TStamp='9300001'>
<USID Id='5147'>MEAN PLATELET VOLUME</USID>
<OBX-VAL Units='fL'>9.3</OBX-VAL>
</OBX>
</OBR>
<OBR Id='22392248' PlacerId='222333444-2' TStamps='9300001'>
<USID Id='7069'>GENERAL SURVEY PROFILE</USID>
<OBX TStamp='9300001'>
<USID Id='1104'>GLUCOSE</USID>
<OBX-VAL Units='mG/dL' RefRange='7-22'>77</OBX-VAL>
<OBX-NOTE>GLUCOSE TEST
</OBX-NOTE>
</OBX>
<OBX TStamp='9300001'>
<USID Id='1137'>CALCIUM</USID>
<OBX-VAL Units='mG/dL' RefRange='2.5-4.5'>9.4</OBX-VAL>
<OBX-NOTE>Please note change in reference range effective 05/04/1998.
</OBX-NOTE>
</OBX>
</OBR>
</PID>
<MSH-RAW><![CDATA[
MSH|^`\&||labtstn||cabtstn|199908020046||ORU|57922001|D|2.2
PID|1|111222333|22392248||Smith^Jane||19170615|M
OBR|1|222333444-1|22392248|7010^COMPLETE BLOOD COUNT^LOCAL|||19980529|||||||199805292311||1352||
OBX|1|ST|5101^REMARKS^LOCAL||DNR||||||F|||199908020046
OBX|2|ST|5147^MEAN PLATELET VOLUME^LOCAL||9.3|fL|||||F|||199908020046
OBR|2|222333444-2|22392248|7069^GENERAL SURVEY PROFILE^LOCAL|||19980529|||||||199805292311||1352||
OBX|1|ST|1104^GLUCOSE^LOCAL||77|mG/dL|7-22||||F|||199908020046
OBX|2|ST|1137^CALCIUM^LOCAL||9.4|mG/dL|2.5-4.5||||F|||199908020046
NTE|1||     Please note change in reference range effective 05/04/1998.
NTE|2||
]]>
</MSH-RAW>
</MSH>

XSL FILE:
19990917_Batch_File_XML_HL7_mod_20_Donneley^Floyd.xsl


<?xml version="1.0"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">


<xsl:template match="/">
<!--this template is applied to the root element-->
    <HTML>
      <HEAD>
        <TITLE>
           <xsl:value-of select="HL7A1/MSH"/>
        </TITLE>
      </HEAD>
      <BODY>
        <xsl:apply-templates select="HL7A1/MSH/PID[@Name = 'Donneley^Floyd']" order-by = "+@Name" />
<!--insert the results of another template identified by the value of
    the "select" attribute-->
                 </BODY>
    </HTML>
 </xsl:template>

<!--closes out main template-->

<!--This template creates a table and begins populating it -->

<xsl:template match="HL7A1/MSH/PID">
<TABLE width="100%" border="1" bgcolor="blue">

<TR bgcolor="green" width="100%" valign="top">

<TD width="16%" valign="top">
NAME:
<BR></BR>
<xsl:value-of select="@Name"/>
</TD>

<TD width="16%" valign="top">
<FONT color="black">
DOB:
<BR></BR>
<xsl:value-of select="@DOB"/>
</FONT>
</TD>

<TD width="16%" valign="top">
<FONT color="black">
SEX:
<BR></BR>
<xsl:value-of select="@Sex"/>
</FONT>
</TD>

<TD width="16%" valign="top">
<FONT color="black">
External ID:
<BR></BR>
<xsl:value-of select="@ExtId"/>
</FONT>
</TD>

<TD width="16%" valign="top">
<FONT color="black">
ID:
<BR></BR>
<xsl:value-of select="@Id"/>
</FONT>
</TD>

<TD width="16%" valign="top">
</TD>

</TR>

<xsl:apply-templates select="OBR"/>
<!--insert the results of another template identified by the value of
    the "select" attribute-->
</TABLE>
</xsl:template>

<xsl:template match="HL7A1/MSH/PID/OBR">


<TR bgcolor="yellow" valign="top">

<TD width="16%" valign="top">
<FONT color="black">
ORDER: <BR></BR><xsl:value-of select="USID"/>
</FONT>
</TD>

<TD width="16%" valign="top">
<FONT size="-1" color="black">Orgin: </FONT>
<BR></BR>
<FONT size="-5" color="black"><xsl:value-of select="../../@Origin"/></FONT>

</TD>

<TD width="16%" valign="top">
<FONT size="-1" color="black">Destination: </FONT>
<BR></BR>
<FONT size="-5" color="black"><xsl:value-of select="../../@Dest"/></FONT>
</TD>

<TD width="16%" valign="top">
<FONT size="-1" color="black">Identification: </FONT>
<BR></BR>
<FONT size="-5" color="black"><xsl:value-of select="../../@Id"/></FONT>
</TD>

<TD width="16%" valign="top">
<FONT size="-1" color="black">Time Stamp: </FONT>
<BR></BR>
<FONT size="-5" color="black"><xsl:value-of select="../../@TStamp"/></FONT>
</TD>


<TD width="16%" valign="top">
<FONT size="-1" color="black">Message Type: </FONT>
<BR></BR>
<FONT size="-5" color="black"><xsl:value-of select="../../@Type"/></FONT>
</TD>



</TR>

<xsl:apply-templates select="OBX"/>
<!--insert the results of another template identified by the value of
    the "select" attribute-->
</xsl:template>

<xsl:template match="HL7A1/MSH/PID/OBR/OBX">

<TR bgcolor="white">

<TD width="16%" align="left">
<FONT size="-1" color="black">TIME STAMP:</FONT>
<BR></BR>
<FONT size="-5" color="black"><xsl:value-of select="@TStamp"/></FONT>
</TD>

<TD width="16%" align="left">
<FONT size="-1" color="black">TEST:</FONT>
<BR></BR>
<FONT size="-5" color="black"><xsl:value-of select="USID"/></FONT>
</TD>

<TD width="16%" align="left">
<FONT size="-1" color="black">RESULT:</FONT>
<BR></BR>
<FONT size="-5" color="black"><xsl:value-of select="OBX-VAL"/></FONT>
</TD>


<TD width="16%" align="left">
<FONT size="-1" color="black">UNITS:</FONT>
<BR></BR>
<FONT size="-5" color="black"><xsl:value-of select="OBX-VAL/@Units"/></FONT>
</TD>

<TD width="16%" align="left">
<FONT size="-1" color="black">NORMAL RANGE:</FONT>
<BR></BR>
<FONT size="-5" color="black"><xsl:value-of select="OBX-VAL/@RefRange"/></FONT>
</TD>

<xsl:apply-templates select="OBX-NOTE"/>

<!--insert the results of another template identified by the value of
    the "select" attribute-->

</TR>

</xsl:template>

<xsl:template match="HL7A1/MSH/PID/OBR/OBX/OBX-NOTE">

<TD width="16%" bgcolor="red" valign="top">
<FONT size="-1" color="black">NOTES: <BR></BR></FONT>
<FONT size="-5" color="black"><xsl:value-of select="../OBX-NOTE"/></FONT>
</TD>

</xsl:template>

<!-- close the template that creates the table -->

<!-- once this template has run it's course, our table is completely
     populated -->

<xsl:template match="text()|@*"><xsl:value-of select="."/></xsl:template>

<xsl:template match="text()"><xsl:value-of select="."/></xsl:template>

</xsl:stylesheet>
		     
------- End of forwarded message -------



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.