Я думал, что было бы проще опубликовать новый вопрос, вместо того чтобы делать больше изменений в предыдущем посте. Мой код XSLT отображает правильный адрес в правильном формате, но когда нет адреса найден под CaseParty
мой код не отображается адрес в Party
Как отобразить адрес в папке CaseParty?
Я добавил код XSL шаблона адреса, так как адрес найден в XML будет быть отформатирован на основе шаблона адреса, т.е. нестандартного, стандартного и иностранного.
Я хотел бы, чтобы отобразить адрес находится под CaseParty
, но если нет адреса найден, я хотел бы, чтобы отобразить адрес в Party
мне нужно проверить, если есть адрес под CaseParty
XPath /Integration/Case/CaseParty/Connection[@Word="DFD"
, а затем <xsl:call-template name="Address"/>
(вызовите шаблон адреса для его форматирования и отображения).
Если адрес не найден под CaseParty
, я хотел бы найти адрес под Party
xpath /Integration/Party/Address[@PartyCurrent="true"
. Если адрес найден там, то отобразите его.
Образец XML-документ с адресом под CaseParty
и адрес под Party
<Integration xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:tsg="http://tsgweb.com" xmlns:IXML="http://tsgweb.com" xmlns:CMCodeQueryHelper="urn:CMCodeQueryHelper" PackageID="DL Notice to DVS" MessageID="67084533" xmlns="">
<Case Op="E" InternalID="1617088326" ID="12120229" xmlns:user="http://tylertechnologies.com">
<CaseParty ID="16731290" InternalCasePartyID="1634787102" InternalPartyID="1614631672">
<Connection Word="DFD" BaseConnection="DF" ID="36370323" InternalCasePartyConnectionID="1636469444">
<Description>Defendant</Description>
</Connection>
<Address CaseCorrespondence="true" ID="17875824" Type="Standard">
<AddressLine2>3712 Testing RD</AddressLine2>
<AddressLine4>St Paul, NY, 21457</AddressLine4>
<Block>3712</Block>
<Street>Testing</Street>
<AddrSfxKy Word="RD">Road</AddrSfxKy>
<City>St Paul</City>
<State>NY</State>
<Zip>21457</Zip>
<Foreign>false</Foreign>
<TimestampCreate>5/27/2015 10:34:08 AM</TimestampCreate>
</Address>
<TimestampCreate>1/29/2015 5:04:53 PM</TimestampCreate>
<TimestampChange/>
</CaseParty>
</Case>
<Party ID="16731290" InternalPartyID="1614631672">
<Address PartyCorrespondence="true" PartyCurrent="true" ID="17867956" Type="Standard">
<AddressLine2>1906 3RD AVE S #36</AddressLine2>
<AddressLine4>Denver, CO, 55408</AddressLine4>
<Block>1906</Block>
<Street>3RD AVE S #36</Street>
<City>Denver</City>
<State>CO</State>
<Zip>87459</Zip>
<Foreign>false</Foreign>
</Address>
</Party>
</Integration>
Желаемая Адрес выход
<nc:Address>
<nc:AddressFullText>
<nc:Address>
<nc:LocationStreet>
<nc:StreetNumberText>3712</nc:StreetNumberText>
<nc:StreetPredirectionalText/>
<nc:StreetName>Testing</nc:StreetName>
<nc:StreetCategoryText>Road</nc:StreetCategoryText>
<nc:StreetPostdirectionalText/>
<nc:StreetExtensionText/>
</nc:LocationStreet>
<nc:LocationCityName>St Paul</nc:LocationCityName>
<nc-3.0.1:LocationStateUSPostalServiceCode>NY</nc-3.0.1:LocationStateUSPostalServiceCode>
<nc:LocationPostalCode>21457</nc:LocationPostalCode>
</nc:Address>
</nc:Address>
Адрес Шаблон
<!--Template Address-->
<xsl:template name="Address">
<xsl:variable name="vUsState" select="document(concat($gEnvPath,'\Schemas\NiemExchanges\DvsDriverLicenseNotification\niem\codes\usps_states\3.0\1\usps_states.xsd'))/xs:schema/xs:simpleType/xs:restriction/xs:enumeration[@value=current()/State]/@value"/>
<xsl:variable name="vCanadianState" select="document(concat($gEnvPath,'\Schemas\NiemExchanges\DvsDriverLicenseNotification\niem\codes\canada_post\3.0\post-canada.xsd'))/xs:schema/xs:simpleType/xs:restriction/xs:enumeration[@value=current()/State]/@value"/>
<nc:Address>
<xsl:choose>
<xsl:when test="Block and ($vUsState or $vCanadianState)">
<!--Standard-->
<nc:LocationStreet>
<nc:StreetNumberText>
<xsl:value-of select="Block"/>
</nc:StreetNumberText>
<nc:StreetPredirectionalText>
<xsl:value-of select="PreDir"/>
</nc:StreetPredirectionalText>
<nc:StreetName>
<xsl:value-of select="Street"/>
</nc:StreetName>
<nc:StreetCategoryText>
<xsl:value-of select="AddrSfxKy"/>
</nc:StreetCategoryText>
<nc:StreetPostdirectionalText>
<xsl:value-of select="PostDir"/>
</nc:StreetPostdirectionalText>
<nc:StreetExtensionText>
<xsl:value-of select="normalize-space(concat(UnitKy, ' ' , UnitNum))"/>
</nc:StreetExtensionText>
</nc:LocationStreet>
<nc:LocationCityName>
<xsl:value-of select="City"/>
</nc:LocationCityName>
<nc-3.0.1:LocationStateUSPostalServiceCode>
<xsl:value-of select="State"/>
</nc-3.0.1:LocationStateUSPostalServiceCode>
<nc:LocationPostalCode>
<xsl:value-of select="Zip"/>
</nc:LocationPostalCode>
</xsl:when>
<xsl:when test="Foreign ='false' and ($vUsState or $vCanadianState)">
<!--Non-Standard-->
<nc:LocationStreet>
<nc:StreetFullText>
<xsl:value-of select="AddressLine1"/>
</nc:StreetFullText>
<nc:StreetFullText>
<xsl:value-of select="AddressLine2"/>
</nc:StreetFullText>
<nc:StreetFullText>
<xsl:value-of select="AddressLine3"/>
</nc:StreetFullText>
</nc:LocationStreet>
<nc:LocationCityName>
<xsl:value-of select="City"/>
</nc:LocationCityName>
<nc-3.0.1:LocationStateUSPostalServiceCode>
<xsl:value-of select="State"/>
</nc-3.0.1:LocationStateUSPostalServiceCode>
<nc:LocationPostalCode>
<xsl:value-of select="Zip"/>
</nc:LocationPostalCode>
</xsl:when>
<xsl:otherwise>
<!--Foreign-->
<nc:AddressFullText>
<xsl:value-of select="concat(AddressLine1, '
')"/>
<xsl:value-of select="concat(AddressLine2, '
')"/>
<xsl:value-of select="concat(AddressLine3, '
')"/>
<xsl:value-of select="concat(AddressLine4, '
')"/>
</nc:AddressFullText>
</xsl:otherwise>
</xsl:choose>
</nc:Address>
</xsl:template>
Мой код xsl работает только при наличии адреса CaseParty
и не работает, если нет адреса под CaseParty
. Он не может отображать адрес в Party
<nc:Address>
<nc:AddressFullText>
<xsl:for-each select="/Integration/Case/CaseParty[Connection/@Word='DFD']/Address">
<xsl:call-template name="Address"/>
</xsl:for-each>
</nc:AddressFullText>
Har07, код, который вы предложили работает, но затем он добавляет дополнительный элемент с NONE ' \t <пс: AddressFullText> NONE nc: AddressFullText> ', вызывающий схему va погрешность.Вывод выглядит следующим образом ' <пс: AddressFullText> 123 Iceberg Rd Ontario Канада 12345A пс: AddressFullText> \t <пс: AddressFullText> NONE пс: AddressFullText> ' Ожидаемые результаты должны смотреть как это ' 123 Айсберг Rd Онтарио Канада 12345A nc: AddressFullText> ' –
Angela