IMPORTANT:
this is not a Support Forum! Experienced users might answer from time to time questions posted here. If you need a professional and reliable answer, or if you want to report a bug, please contact Altova Support instead.

How do I use a variable to get PO number and ID? Options · View
winkimjr2
Posted: Wednesday, July 20, 2016 3:36:14 PM
Rank: Member

Joined: 5/26/2016
Posts: 19
Location: Maplewood USA
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 am getting the attribute internalProtectionID="2552"

How can I modify the this line of code so I can use the vPoID variable to get ProtectionOrderNumber?

Modify this line <xsl:attribute name="protectionOrderNumber"><xsl:value-of select="ProtectionOrderNumber"/></xsl:attribute>


Expected output
Code:
<NotificationEvent notificationType="ProtectionOrderHearing" internalProtectionOrderID="2552" protectionOrderNumber="1600330"/>


xslt code
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))) &lt;=$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)]">
                                    <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))"/>
                                    <xsl:variable name="vPoID">
                                        <xsl:for-each select="//Integration/ProtectionOrder[Deleted='false']">
                                            <xsl:variable name="vCurrentPoStatus" select="Statuses/Status[mscef:formatDateTimeNumeric(mscef:fixOdysseyTimestamp(string(TimestampCreate))) &lt;=$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">
                                        <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
Code:
<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>
        </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>
        </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>
vlad
Posted: Thursday, July 21, 2016 10:15:10 AM
Rank: Advanced Member

Joined: 12/13/2005
Posts: 2,856
Location: Mauritius
$vPoID/ProtectionOrderNumber
Users browsing this topic
guest

Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Use of the Altova User Forum(s) is governed by the Altova Terms of Use.