【问题标题】:Convert XML response date format from YYYY-MM-DDT00:00:00 into DD/MM/YYYY using XSLT使用 XSLT 将 XML 响应日期格式从 YYYY-MM-DDT00:00:00 转换为 DD/MM/YYYY
【发布时间】:2019-08-25 02:05:41
【问题描述】:

我的 XML 响应版本“1.0”在元素数组中显示不同的收集日期,格式为 2019-04-04T00:00:00,我想使用 XSLT 版本“1.0”将每个重复元素中的日期格式转换为 04/04/2019 (DD/MM/YYYY)。我曾尝试寻找一些解决方案或将其与我正在做的其他转换合并,但这会使它们出错,所以我只想将样式表转换如下,然后我将分别转换其余部分

以不正确的日期格式响应 XML

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap:Body>
      <GetFullSiteCollectionsResponse xmlns="http://webservices.whitespacews.com/">
         <GetFullSiteCollectionsResult>
            <ErrorCode>0</ErrorCode>
            <ErrorDescription>Success</ErrorDescription>
            <SuccessFlag>true</SuccessFlag>
            <SiteServices>
               <ApiSiteServiceWithExtraDetails>
                  <SiteService>                     
                     <SiteServiceItemQuantity>1.0000</SiteServiceItemQuantity>
                     <SiteServiceItemID>17222</SiteServiceItemID>
                     <NextCollectionDate>2019-04-04T00:00:00</NextCollectionDate>
                  </SiteService>
                  <RRASSContractRounds>
                     <RRASSContractRound>                                                   
                        <RoundCodeOnly>GDN2</RoundCodeOnly>
                        <DefaultDeviceType>STREET</DefaultDeviceType>
                     </RRASSContractRound>
                  </RRASSContractRounds>
               </ApiSiteServiceWithExtraDetails>
               <ApiSiteServiceWithExtraDetails>
                  <SiteService>                     
                     <SiteServiceItemQuantity>1.0000</SiteServiceItemQuantity>
                     <SiteServiceItemID>17220</SiteServiceItemID>
                     <NextCollectionDate>2019-04-11T00:00:00</NextCollectionDate>
                  </SiteService>
                  <RRASSContractRounds>
                     <RRASSContractRound>                                                
                        <RoundCodeOnly>REC3</RoundCodeOnly>
                        <DefaultDeviceType>STREET</DefaultDeviceType>
                     </RRASSContractRound>
                  </RRASSContractRounds>
               </ApiSiteServiceWithExtraDetails>                              
            </SiteServices>
         </GetFullSiteCollectionsResult>
      </GetFullSiteCollectionsResponse>
   </soap:Body>
</soap:Envelope>

期望的结果

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap:Body>
      <GetFullSiteCollectionsResponse xmlns="http://webservices.whitespacews.com/">
         <GetFullSiteCollectionsResult>
            <ErrorCode>0</ErrorCode>
            <ErrorDescription>Success</ErrorDescription>
            <SuccessFlag>true</SuccessFlag>
            <SiteServices>
               <ApiSiteServiceWithExtraDetails>
                  <SiteService>                     
                     <SiteServiceItemQuantity>1.0000</SiteServiceItemQuantity>
                     <SiteServiceItemID>17222</SiteServiceItemID>
                     <NextCollectionDate>04/04/2019</NextCollectionDate>
                  </SiteService>
                  <RRASSContractRounds>
                     <RRASSContractRound>                                
                        <RoundCodeOnly>GDN2</RoundCodeOnly>
                        <DefaultDeviceType>STREET</DefaultDeviceType>
                     </RRASSContractRound>
                  </RRASSContractRounds>
               </ApiSiteServiceWithExtraDetails>
               <ApiSiteServiceWithExtraDetails>
                  <SiteService>                     
                     <SiteServiceItemQuantity>1.0000</SiteServiceItemQuantity>
                     <SiteServiceItemID>17220</SiteServiceItemID>
                     <NextCollectionDate>11/04/2019</NextCollectionDate>
                  </SiteService>
                  <RRASSContractRounds>
                     <RRASSContractRound>                                                                          
                        <RoundCodeOnly>REC3</RoundCodeOnly>
                        <DefaultDeviceType>STREET</DefaultDeviceType>
                     </RRASSContractRound>
                  </RRASSContractRounds>
               </ApiSiteServiceWithExtraDetails>                              
            </SiteServices>
         </GetFullSiteCollectionsResult>
      </GetFullSiteCollectionsResponse>
   </soap:Body>
</soap:Envelope>

【问题讨论】:

    标签: xml xslt xslt-1.0


    【解决方案1】:

    XSLT 1.0 没有日期的概念。您需要将此视为文本操作中的(简单)问题:

    <xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ws="http://webservices.whitespacews.com/"
    exclude-result-prefixes="ws">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:strip-space elements="*"/>
    
    <!-- identity transform -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    
    <xsl:template match="ws:NextCollectionDate">
        <xsl:copy>
            <xsl:value-of select="substring(., 9, 2)"/>
            <xsl:text>/</xsl:text>
            <xsl:value-of select="substring(., 6, 2)"/>
            <xsl:text>/</xsl:text>
            <xsl:value-of select="substring(., 1, 4)"/>
        </xsl:copy>
    </xsl:template>
    
    </xsl:stylesheet>
    

    【讨论】:

      猜你喜欢
      • 2020-08-28
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      • 2015-02-03
      相关资源
      最近更新 更多