Jump to content
Sign in to follow this  
winkimjr2

How do I use my variable to get ProtectionOrderNumber?

Recommended Posts

I am using a variable vPoID to determine the right ProtectionOrder. Then I am displaying that PO's @InternalProtectionOrderID.
I would also like to use the same variable to get that PO's ProtectionOrderNumber.
How can I use the same variable to also get ProtectionOrderNumber?
I would like to modify this line to use the variable vPoID to get the ProtectionOrderNumber
<xsl:attribute name="protectionOrderNumber"><xsl:value-of select="ProtectionOrderNumber"/></xsl:attribute>
Expected output
<NotificationEvent notificationType="ProtectionOrderHearing" internalProtectionOrderID="2552" protectionOrderNumber="1600330"/>
xslt code
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:mscef="courts.state.mn.us/extfun" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:if test="Integration/Case/SecurityGroup[not(contains(@Word,'SEAL'))] or not(Integration/Case/SecurityGroup)">
<xsl:call-template name="ProtectionOrderHearing"/>
</xsl:if>
</xsl:template>
<!--  -->
<xsl:template name="ProtectionOrderHearing">
<!--<xsl:if test="Integration/ControlPoint='SAVE-FAM-HEARING'">-->
<xsl:if test="Integration/ControlPoint=('SAVE-FAM-HEARING') or ('SAVE-FAM-HEAR-CTS')">
<xsl:if test="Integration/Case/CaseType/@Word='DMA'">
<xsl:for-each select="Integration/Case">
<xsl:variable name="vFoundActivePO">
<xsl:for-each select="/Integration/ProtectionOrder[Deleted='false']">
<xsl:variable name="vControlPointTimestamp" select="mscef:formatDateTimeNumeric(string(/Integration/ControlPoint/@Timestamp))"/>
<xsl:variable name="vCurrentPoStatus" select="Statuses/Status[mscef:formatDateTimeNumeric(mscef:fixOdysseyTimestamp(string(TimestampCreate))) <=$vControlPointTimestamp][1]/Type/@Word"/>
<xsl:if test="($vCurrentPoStatus ='SBJO') or ($vCurrentPoStatus='SBJOCOR')">HIT</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="vFoundHearingTrigger">
<xsl:choose>
<xsl:when test="count(Hearing[@Op='A'])>0">HIT</xsl:when>
<xsl:when test="count(Hearing[@Op='D'])>0">HIT</xsl:when>
<xsl:when test="count(Hearing[(@Op='E') and (CancelledReason/@Op='E')])>0">HIT</xsl:when>
<xsl:when test="count(Hearing[(@Op='E') and (Setting/HearingDate/@Op='E')])>0">HIT</xsl:when>
<xsl:when test="count(Hearing[(@Op='E') and (Setting/CourtSessionBlock/StartTime/@Op='E')])>0">HIT</xsl:when>
<xsl:when test="count(Hearing/Setting[@Op='A'])>0">HIT</xsl:when>
<xsl:when test="count(Hearing[(@Op='E') and (Setting/RescheduledType/@Op='E')])>0">HIT</xsl:when>
<xsl:when test="count(Hearing[(@Op='E') and (Setting/CancelledReason/@Op='E')])>0">HIT</xsl:when>
<xsl:when test="count(Hearing[(@Op='E') and (Setting/CourtSessionBlock/StartTime/@Op='E')])>0">HIT</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:if test="(contains($vFoundHearingTrigger,'HIT')) and (contains($vFoundActivePO,'HIT'))">
<xsl:choose>
<xsl:when test="count(Hearing/Setting[not(Cancelled)])>0">
<xsl:for-each select="Hearing/Setting[not(Cancelled)]">
<!-- WK 07/19/2016-->
<xsl:variable name="vCurrentTimestamp">
<xsl:value-of select="mscef:formatDateTimeNumeric(string(/Integration/ControlPoint/@Timestamp))"/>
</xsl:variable>
<xsl:variable name="vControlPointTimestamp" select="mscef:formatDateTimeNumeric(string(/Integration/ControlPoint/@Timestamp))"/>
<!--WK 07/19/2016 variable to hold ProtectionOrders that have not been deleted-->
<xsl:variable name="vPoID">
<!--WK 07/19/2016 Select all ProtectionOrder elements from the document that are not deleted-->
<xsl:for-each select="//Integration/ProtectionOrder[Deleted='false']">
<xsl:variable name="vCurrentPoStatus" select="Statuses/Status[mscef:formatDateTimeNumeric(mscef:fixOdysseyTimestamp(string(TimestampCreate))) <=$vCurrentTimestamp][1]/Type/@Word"/>
<xsl:if test="($vCurrentPoStatus ='SBJO') or ($vCurrentPoStatus='SBJOCOR')">
<xsl:value-of select="@InternalProtectionOrderID"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<NotificationEvent notificationType="ProtectionOrderHearing">
<!--WK 07/19/2016 variable vPoID to get the right PO's attribute @InternalProtectionOrderID>-->
<xsl:attribute name="internalProtectionOrderID"><xsl:value-of select="$vPoID"/></xsl:attribute>
<xsl:attribute name="protectionOrderNumber"><xsl:value-of select="ProtectionOrderNumber"/></xsl:attribute>
</NotificationEvent>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<NotificationEvent notificationType="ProtectionOrderHearing">
<xsl:attribute name="internalProtectionOrderID"><xsl:value-of select="//Integration/ProtectionOrder[Deleted='false'][count(Statuses/Status[(Type/@Word='SBJO') or (Type/@Word='SBJOCOR')])>0]/@InternalProtectionOrderID"/></xsl:attribute>
<xsl:attribute name="protectionOrderNumber"><xsl:value-of select="//Integration/ProtectionOrder[Deleted='false'][count(Statuses/Status[(Current='true') and ((Type/@Word='SBJO') or (Type/@Word='SBJOCOR'))])>0]/ProtectionOrderNumber"/><xsl:value-of select="//Integration/ProtectionOrder[Deleted='false'][count(Statuses/Status[(Type/@Word='SBJO') or (Type/@Word='SBJOCOR')])>0]/ProtectionOrderNumber"/></xsl:attribute>
<xsl:text>NoHearings</xsl:text>
</NotificationEvent>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:if>
</xsl:template>
<!--  -->
<msxsl:script language="JScript" implements-prefix="mscef"><![CDATA[
function formatDateTimeNumeric(sDate){
if(sDate.length==0){
return "";
}
else{
var oDate=new Date(sDate);
var str = oDate.getSeconds();
return "" + oDate.getFullYear().toString() + padZeroes(oDate.getMonth() + 1,2) + padZeroes(oDate.getDate(),2) + padZeroes(oDate.getHours().toString(),2) + padZeroes(oDate.getMinutes(),2) + padZeroes(oDate.getSeconds(),2);   
}
}
function currentDateTimeNumeric(){
var oDate=new Date();
var str = oDate.getSeconds();
return "" + oDate.getFullYear().toString() + padZeroes(oDate.getMonth() + 1,2) + padZeroes(oDate.getDate(),2) + padZeroes(oDate.getHours().toString(),2) + padZeroes(oDate.getMinutes(),2) + padZeroes(oDate.getSeconds(),2);   
} 


function fixOdysseyTimestamp(sDate){
/* Replace the ":" between seconds and miliseconds */
if(sDate.length==0){
return "";
}
else{
var strParts1 = sDate.split(" ");
var strTime = strParts1[1];
var strParts2 = strTime.split(":");
return strParts1[0] + " " + strParts2[0] + ":" + strParts2[1] + ":" + strParts2[2];
}
}
]]></msxsl:script>
</xsl:stylesheet>
xml document
<Integration xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:tsg="http://tsgweb.com" xmlns:IXML="http://tsgweb.com" xmlns:CMCodeQueryHelper="urn:CMCodeQueryHelper" PackageID="BCA PO Notification" MessageID="82119264" xmlns="">
<ControlPoint Timestamp="7/14/2016 9:00:52 AM">SAVE-FAM-HEARING</ControlPoint>
<Case>
<FiledDate>07/14/2016</FiledDate>
<CaseCategory>FAM</CaseCategory>
<CaseType Word="DMA">Domestic Abuse</CaseType>
<BaseCaseType>Civil Domestic Violence</BaseCaseType>
<SecurityGroup Word="CONFPOR">Conf - Protective Order</SecurityGroup>
<Active>true</Active>
<Deleted>false</Deleted>
<Assignment Current="true">
<AssignmentDate>07/14/2016</AssignmentDate>
<TimestampCreate>07/14/2016 08:56:32:707</TimestampCreate>
</Assignment>
<Hearing ID="175088126" InternalHearingEventID="1734552990">
<HearingType Word="ADJ">Adjudicatory Hearing</HearingType>
<HearingTypeBaseCaseCategory>Criminal</HearingTypeBaseCaseCategory>
<HearingTypeBaseCaseCategory>Family</HearingTypeBaseCaseCategory>
<TimestampCreate>07/14/2016 08:58:22:160</TimestampCreate>
<Setting ID="25760837" InternalSettingID="1625564128" Date="07/14/2016">
<HearingDate>07/14/2016</HearingDate>
<StartTime>10:00 AM</StartTime>
<EndTime>11:00 AM</EndTime>
<CourtSessionName>Ad-Hoc_10-FA-16-40</CourtSessionName>
<CourtSessionID ID="3862219" InternalCourtSessionID="1612936893"/>
<Calendar Word="10GEN">New General Carver</Calendar>
<CalendarBaseCaseCategory>Criminal</CalendarBaseCaseCategory>
<CalendarBaseCaseCategory>Civil</CalendarBaseCaseCategory>
<CalendarBaseCaseCategory>Family</CalendarBaseCaseCategory>
<CalendarBaseCaseCategory>Probate or Mental Health</CalendarBaseCaseCategory>
<CourtSessionBlock InternalCourtSessionBlockID="1615773709">
<StartTime>10:00 AM</StartTime>
<EndTime>11:00 AM</EndTime>
</CourtSessionBlock>
<TimestampCreate>07/14/2016 08:58:23:240</TimestampCreate>
</Setting>
</Hearing>
<Hearing ID="175088128" InternalHearingEventID="1734552992" Op="A">
<HearingType Op="A" Word="OFP">Order for Protection Hearing</HearingType>
<HearingTypeBaseCaseCategory>Family</HearingTypeBaseCaseCategory>
<TimestampCreate Op="A">07/14/2016 09:00:52:680</TimestampCreate>
<Setting ID="25760838" InternalSettingID="1625564129" Date="07/14/2016" Op="A">
<HearingDate Op="A">07/14/2016</HearingDate>
<StartTime Op="A">2:00 PM</StartTime>
<EndTime Op="A">3:00 PM</EndTime>
<CourtSessionName>Ad-Hoc_10-FA-16-40</CourtSessionName>
<CourtSessionID Op="A" ID="3862221" InternalCourtSessionID="1612936894"/>
<Calendar Op="A" Word="10GEN">New General Carver</Calendar>
<CalendarBaseCaseCategory>Criminal</CalendarBaseCaseCategory>
<CalendarBaseCaseCategory>Civil</CalendarBaseCaseCategory>
<CalendarBaseCaseCategory>Family</CalendarBaseCaseCategory>
<CalendarBaseCaseCategory>Probate or Mental Health</CalendarBaseCaseCategory>
<CourtSessionBlock InternalCourtSessionBlockID="1615773710">
<StartTime Op="A">2:00 PM</StartTime>
<EndTime Op="A">3:00 PM</EndTime>
</CourtSessionBlock>
<TimestampCreate Op="A">07/14/2016 09:00:52:767</TimestampCreate>
</Setting>
</Hearing>
</Case>
<ProtectionOrder InternalProtectionOrderID="2551" xmlns:user="http://tylertechnologies.com">
<Deleted>false</Deleted>
<ProtectionOrderNumber>1600329</ProtectionOrderNumber>
<Type Word="EXPARTE">Ex Parte Order for Protection</Type>
<Statuses>
<Status>
<Current>true</Current>
<Active>No</Active>
<Date>07/14/2016</Date>
<Type Word="SUPERSEDED">Superseded</Type>
<TimestampCreate>07/14/2016 09:00:25:510</TimestampCreate>
</Status>
</ProtectionOrder>
<ProtectionOrder InternalProtectionOrderID="2552" xmlns:user="http://tylertechnologies.com">
<Deleted>false</Deleted>
<ProtectionOrderNumber>1600330</ProtectionOrderNumber>
<Type Word="EXPARTE">Ex Parte Order for Protection</Type>
<Statuses>
<Status>
<Current>true</Current>
<Active>Yes</Active>
<Date>07/14/2016</Date>
<Type Word="SBJO">Signed By Judicial Officer</Type>
<TimestampCreate>07/14/2016 09:00:25:547</TimestampCreate>
</Status>
</Statuses>
</ProtectionOrder>
</Integration>

 

Share this post


Link to post
Share on other sites

I don't have much experience with XSLT, but why use the same variable? Why not a second variable to hold the second value? It looks like you have a structure to get the InternalProtectionOrderID attribute, wouldn't you use a similar structure to get the value of the associated ProtectionOrderNumber node?

Share this post


Link to post
Share on other sites

I don't have much experience with XSLT, but why use the same variable? Why not a second variable to hold the second value? It looks like you have a structure to get the InternalProtectionOrderID attribute, wouldn't you use a similar structure to get the value of the associated ProtectionOrderNumber node?

I did figure out how to use variable in select statement. I wanted to not to duplicate code.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...