을 사용하여 XML의 요소를 검사하십시오. 따라서 웹 서비스를 통해 전송되기 전에 XSL을 사용하여 날짜를 형식화하려고하지만 DOB 필드가 비어 있으면 해당 필드가 비어 있는지 확인하십시오. 그 안에 날짜가 있으면 날짜 형식으로 진행됩니다.XSL
은 이제 날짜를 포맷하는 XSL을 가지고있다 - 그러나 나는 작업 상태를 얻이 수없는 것 자사 비워두면 그것을 XSL을 통해 이동하기 전에 빈
XML :
<BriefDetails>
<ObjectID>
<flt:ObjectType>C1</flt:ObjectType>
</ObjectID>
</BriefDetails>
<Name>
<Title>Dr</Title>
<Forename>Paul</Forename>
<Surname>Smith</Surname>
<flt:Preferred>true</flt:Preferred>
</Name>
<ContactEmails>
<EmailAddress>[email protected]</EmailAddress>
<flt:Preferred>true</flt:Preferred>
</ContactEmails>
<DateOfBirth />
<ContactPostals>
<AddressNumber>34</AddressNumber>
<AddressLine>Hopeless Road</AddressLine>
<AddressLine>Maghera</AddressLine>
<Postcode>BT74 2TY</Postcode>
<flt:Preferred>true</flt:Preferred>
</ContactPostals>
<ContactPhones>
<Number>5545454</Number>
<flt:Preferred>false</flt:Preferred>
</ContactPhones>
<ContactPhones>
<Number>5454545</Number>
<flt:Preferred>false</flt:Preferred>
</ContactPhones>
XSL 후 XML : 당신이 위
<BriefDetails>
<ObjectID>
<flt:ObjectType>C1</flt:ObjectType>
</ObjectID>
</BriefDetails>
<Name>
<Title>Dr</Title>
<Forename>Paul</Forename>
<Surname>Smith</Surname>
<flt:Preferred>true</flt:Preferred>
</Name>
<ContactEmails>
<EmailAddress>[email protected]</EmailAddress>
<flt:Preferred>true</flt:Preferred>
</ContactEmails>
***<DateOfBirth>--</DateOfBirth>***
<ContactPostals>
<AddressNumber>34</AddressNumber>
<AddressLine>Hopeless Road</AddressLine>
<AddressLine>Maghera</AddressLine>
<Postcode>BT74 2TY</Postcode>
<flt:Preferred>true</flt:Preferred>
</ContactPostals>
<ContactPhones>
<Number>5545454</Number>
<flt:Preferred>false</flt:Preferred>
</ContactPhones>
<ContactPhones>
<Number>5454545</Number>
<flt:Preferred>false</flt:Preferred>
</ContactPhones>
이 같은 DOB을 볼 수 -
<xsl:template match="DateOfBirth">
<xsl:element name="DateOfBirth">
<xsl:call-template name="formatDate">
<xsl:with-param name="dateParam" select="." />
</xsl:call-template>
</xsl:element>
</xsl:template>
<xsl:template name="formatDate">
<xsl:param name="dateParam" />
<!-- input format mm/dd/yyyy or m/d/yyyy -->
<!-- output format yyyy-mm-dd -->
<!-- parse out the day, month and year -->
<xsl:variable name="day">
<xsl:value-of select="substring-before($dateParam,'/')" />
</xsl:variable>
<xsl:variable name="month">
<xsl:value-of select="substring-before(substring-after($dateParam,'/'),'/')" />
</xsl:variable>
<xsl:variable name="year">
<xsl:value-of select="substring-after(substring-after($dateParam,'/'),'/')" />
</xsl:variable>
<!-- now print them out. Pad with 0 where necessary. -->
<xsl:value-of select="$year" />
<xsl:value-of select="'-'" />
<xsl:if test="string-length($month) = 1">
<xsl:value-of select="'0'" />
</xsl:if>
<xsl:value-of select="$month" />
<xsl:value-of select="'-'" />
<xsl:if test="string-length($day) = 1">
<xsl:value-of select="'0'" />
</xsl:if>
<xsl:value-of select="$day" />
</xsl:template>
내가 조건에 추가 시도 : XSL 사용중인
<xsl:template match="DateOfBirth">
<xsl:for-each select="DateOfBirth">
<xsl:if test="string-length(DateOfBirth) != 0">
<xsl:call-template name="formatDate">
<xsl:with-param name="dateParam" select="DateOfBirth" />
</xsl:call-template>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template name="formatDate">
<xsl:param name="dateParam" />
<!-- input format mm/dd/yyyy or m/d/yyyy -->
<!-- output format yyyy-mm-dd -->
<!-- parse out the day, month and year -->
<xsl:variable name="day">
<xsl:value-of select="substring-before($dateParam,'/')" />
</xsl:variable>
<xsl:variable name="month">
<xsl:value-of select="substring-before(substring-after($dateParam,'/'),'/')" />
</xsl:variable>
<xsl:variable name="year">
<xsl:value-of select="substring-after(substring-after($dateParam,'/'),'/')" />
</xsl:variable>
<!-- now print them out. Pad with 0 where necessary. -->
<xsl:value-of select="$year" />
<xsl:value-of select="'-'" />
<xsl:if test="string-length($month) = 1">
<xsl:value-of select="'0'" />
</xsl:if>
<xsl:value-of select="$month" />
<xsl:value-of select="'-'" />
<xsl:if test="string-length($day) = 1">
<xsl:value-of select="'0'" />
</xsl:if>
<xsl:value-of select="$day" />
</xsl:template>
하지만 이제 XML
에 내가 이것을 달성 할 수있는 방법에 대한 조언을 DOB을 제거합니다?
빠른 답장을 보내 주셔서 감사합니다. 이것은 내가 필요한 것을 거의 다룬다. 비록 날짜가 공백이면 오류가 표시된다고해도 문제는 여전히 남아 있지만 XML에서 DOB가 제거되지 않은 것을 볼 수있다. DOB가 예상되면 WS에 로직을 적용해야한다고 생각합니다. DOB가 비어 있으면 WS에 포함되지 않은 논리를 적용합니다. – user1800502