2013-04-02 33 views
0

存在的表,我的品牌新XSLT和我試圖從一個XLM文件創建HTML格式的輸出表。我被困在以下要求:我需要拉住家庭地址,如果它存在,如果它不,我需要使用工作地址。我正在編寫代碼來檢查並將Home_Line_1插入到我的表中。這裏是我一起工作的XML:如何使用XLS:如果填充依賴於節點

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> 
    <env:Body> 
     <wd:Get_Workers_Response wd:version="v17" xmlns:wd="urn:com.workday/bsvc"> 
     <wd:Request_Criteria> 
     <wd:Organization_Reference wd:Descriptor="MMM Money Market Mansion (Marcia Menos)"> 
      <wd:ID wd:type="WID">f10da305867044b8a30c67671e4034c1</wd:ID> 
      <wd:ID wd:type="Organization_Reference_ID">SUPERVISORY_ORGANIZATION-1-219</wd:ID> 
     </wd:Organization_Reference> 
    </wd:Request_Criteria> 
    <wd:Response_Results> 
     <wd:Total_Results>5</wd:Total_Results> 
     <wd:Total_Pages>1</wd:Total_Pages> 
     <wd:Page_Results>5</wd:Page_Results> 
     <wd:Page>1</wd:Page> 
    </wd:Response_Results> 
    <wd:Response_Data> 
     <wd:Worker> 
      <wd:Worker_Reference wd:Descriptor="Gabriel Bezerra"> 
       <wd:ID wd:type="WID">1efbe4be1e764a4d8dd205ee6550cafb</wd:ID> 
       <wd:ID wd:type="Employee_ID">21305</wd:ID> 
      </wd:Worker_Reference> 
      <wd:Worker_Data> 
       <wd:Worker_ID>21305</wd:Worker_ID> 
       <wd:User_ID>gbezerra</wd:User_ID> 
       <wd:Personal_Data> 
       <wd:Name_Data> 
        <wd:Legal_Name_Data> 
         <wd:Name_Detail_Data wd:Formatted_Name="Gabriel Bezerra" wd:Reporting_Name="Bezerra, Gabriel"> 
          <wd:Country_Reference wd:Descriptor="Brazil"> 
          <wd:ID wd:type="WID">1a29bb1357b240ab99a2fa755cc87c0e</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Alpha-2_Code">BR</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Alpha-3_Code">BRA</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Numeric-3_Code">76</wd:ID> 
          </wd:Country_Reference> 
          <wd:First_Name>Gabriel</wd:First_Name> 
          <wd:Last_Name>Bezerra</wd:Last_Name> 
         </wd:Name_Detail_Data> 
        </wd:Legal_Name_Data> 
        <wd:Preferred_Name_Data> 
         <wd:Name_Detail_Data wd:Formatted_Name="Gabriel Bezerra" wd:Reporting_Name="Bezerra, Gabriel"> 
          <wd:Country_Reference wd:Descriptor="Brazil"> 
          <wd:ID wd:type="WID">1a29bb1357b240ab99a2fa755cc87c0e</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Alpha-2_Code">BR</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Alpha-3_Code">BRA</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Numeric-3_Code">76</wd:ID> 
          </wd:Country_Reference> 
          <wd:First_Name>Gabriel</wd:First_Name> 
          <wd:Last_Name>Bezerra</wd:Last_Name> 
         </wd:Name_Detail_Data> 
        </wd:Preferred_Name_Data> 
       </wd:Name_Data> 
       <wd:Gender_Reference wd:Descriptor="Male"> 
        <wd:ID wd:type="WID">d3afbf8074e549ffb070962128e1105a</wd:ID> 
        <wd:ID wd:type="Gender_Code">Male</wd:ID> 
       </wd:Gender_Reference> 
       <wd:Birth_Date>1980-08-13-07:00</wd:Birth_Date> 
       <wd:Marital_Status_Reference wd:Descriptor="Single (United States of America)"> 
        <wd:ID wd:type="WID">0c855e50cb12452487de0caf7f262d4f</wd:ID> 
        <wd:ID wd:type="Marital_Status_ID">Single_USA</wd:ID> 
       </wd:Marital_Status_Reference> 
       <wd:Disability_Reference wd:Descriptor="Hearing Impairment (United States of America)"> 
        <wd:ID wd:type="WID">a59abdaa91474e26a4fe3c55ec3775ef</wd:ID> 
        <wd:ID wd:type="Disability_ID">Hearing_Impairment_USA</wd:ID> 
       </wd:Disability_Reference> 
       <wd:Hispanic_or_Latino>0</wd:Hispanic_or_Latino> 
       <wd:Citizenship_Status_Reference wd:Descriptor="Citizen (United States of America)"> 
        <wd:ID wd:type="WID">2ec46eb7edcc4d5aa97af54147204e0e</wd:ID> 
        <wd:ID wd:type="Citizenship_Status_Code">USA_Citizen</wd:ID> 
       </wd:Citizenship_Status_Reference> 
       <wd:Military_Service_Data> 
        <wd:Status_Reference wd:Descriptor="0 - Inactive (United States of America)"> 
         <wd:ID wd:type="WID">dee05ff9af5341f08c5b0cc651d86f9b</wd:ID> 
         <wd:ID wd:type="Military_Status_ID">Inactive_USA</wd:ID> 
        </wd:Status_Reference> 
        <wd:Discharge_Date>2012-08-01-07:00</wd:Discharge_Date> 
       </wd:Military_Service_Data> 
       <wd:Identification_Data> 
        <wd:National_ID> 
         <wd:National_ID_Reference wd:Descriptor="001-33-3450 (USA-SSN)"> 
          <wd:ID wd:type="WID">af5e69b72e2a404c8cd8c7383302f036</wd:ID> 
         </wd:National_ID_Reference> 
         <wd:National_ID_Data> 
          <wd:ID>001333450</wd:ID> 
          <wd:ID_Type_Reference wd:Descriptor="Social Security Number (SSN)"> 
          <wd:ID wd:type="WID">93636994cfe84825a1daaa933cbba7e7</wd:ID> 
          <wd:ID wd:type="National_ID_Type_Code">USA-SSN</wd:ID> 
          </wd:ID_Type_Reference> 
          <wd:Country_Reference wd:Descriptor="United States of America"> 
          <wd:ID wd:type="WID">bc33aa3152ec42d4995f4791a106ed09</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Alpha-2_Code">US</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Alpha-3_Code">USA</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Numeric-3_Code">840</wd:ID> 
          </wd:Country_Reference> 
          <wd:Verification_Date>2012-08-13-07:00</wd:Verification_Date> 
         </wd:National_ID_Data> 
        </wd:National_ID> 
       </wd:Identification_Data> 
       <wd:Contact_Data> 
        <wd:Address_Data wd:Effective_Date="2000-01-01-08:00" wd:Address_Format_Type="Extended" wd:Formatted_Address="Av Cmte Júlio Moura, 900&amp;#xa;Barra de Tijuca&amp;#xa;Rio de Janeiro- RJ&amp;#xa;22621-252&amp;#xa;Brazil" wd:Defaulted_Business_Site_Address="0"> 
         <wd:Country_Reference wd:Descriptor="Brazil"> 
          <wd:ID wd:type="WID">1a29bb1357b240ab99a2fa755cc87c0e</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Alpha-2_Code">BR</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Alpha-3_Code">BRA</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Numeric-3_Code">76</wd:ID> 
         </wd:Country_Reference> 
         <wd:Last_Modified>2009-06-06T20:07:49.246-07:00</wd:Last_Modified> 
         <wd:Address_Line_Data wd:Type="ADDRESS_LINE_1" wd:Descriptor="Street Name">Av Cmte Júlio Moura</wd:Address_Line_Data> 
         <wd:Address_Line_Data wd:Type="ADDRESS_LINE_3" wd:Descriptor="House Number">900</wd:Address_Line_Data> 
         <wd:Municipality>Rio de Janeiro</wd:Municipality> 
         <wd:Submunicipality_Data>Barra de Tijuca</wd:Submunicipality_Data> 
         <wd:Country_Region_Reference wd:Descriptor="Rio de Janeiro"> 
          <wd:ID wd:type="WID">e88c3d7cdb2b4a8b8120ede0b16e2186</wd:ID> 
          <wd:ID wd:type="Country_Region_ID">BRA-RJ</wd:ID> 
         </wd:Country_Region_Reference> 
         <wd:Postal_Code>22621-252</wd:Postal_Code> 
         <wd:Usage_Data wd:Public="0"> 
          <wd:Type_Data wd:Primary="1"> 
          <wd:Type_Reference wd:Descriptor="Home"> 
           <wd:ID wd:type="WID">836cf00ef5974ac08b786079866c946f</wd:ID> 
           <wd:ID wd:type="Communication_Usage_Type_ID">HOME</wd:ID> 
          </wd:Type_Reference> 
          </wd:Type_Data> 
          <wd:Use_For_Reference wd:Descriptor="Street Address"> 
          <wd:ID wd:type="WID">f785430145674364a613cd56086942c4</wd:ID> 
          <wd:ID wd:type="Communication_Usage_Behavior_ID">STREET</wd:ID> 
          </wd:Use_For_Reference> 
          <wd:Use_For_Reference wd:Descriptor="Mailing"> 
          <wd:ID wd:type="WID">9385649a0c4b4ddea7fb0d823c2f1bcd</wd:ID> 
          <wd:ID wd:type="Communication_Usage_Behavior_ID">MAILING</wd:ID> 
          </wd:Use_For_Reference> 
         </wd:Usage_Data> 
        </wd:Address_Data> 
        <wd:Address_Data wd:Effective_Date="2000-01-01-08:00" wd:Address_Format_Type="Basic" wd:Formatted_Address="3755 Peachtree Road NE&amp;#xa;Atlanta, GA 30305&amp;#xa;United States of America" wd:Defaulted_Business_Site_Address="1"> 
         <wd:Country_Reference wd:Descriptor="United States of America"> 
          <wd:ID wd:type="WID">bc33aa3152ec42d4995f4791a106ed09</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Alpha-2_Code">US</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Alpha-3_Code">USA</wd:ID> 
          <wd:ID wd:type="ISO_3166-1_Numeric-3_Code">840</wd:ID> 
         </wd:Country_Reference> 
         <wd:Last_Modified>2011-06-20T13:54:02.466-07:00</wd:Last_Modified> 
         <wd:Address_Line_Data wd:Type="ADDRESS_LINE_1" wd:Descriptor="Address Line 1">3755 Peachtree Road NE</wd:Address_Line_Data> 
         <wd:Municipality>Atlanta</wd:Municipality> 
         <wd:Country_Region_Reference wd:Descriptor="Georgia"> 
          <wd:ID wd:type="WID">dec8eabbb13d45bdb159b8e25d896110</wd:ID> 
          <wd:ID wd:type="Country_Region_ID">USA-GA</wd:ID> 
         </wd:Country_Region_Reference> 
         <wd:Postal_Code>30305</wd:Postal_Code> 

,這裏是對我有麻煩了XSLT的部分。它不給我任何錯誤代碼,但它只是什麼都不做:

<xsl:for-each select="env:Envelope/env:Body/wd:Get_Workers_Response/wd:Response_Data/wd:Worker/wd:Worker_Data"> 
    <tr> 
     <td><xsl:value-of select="wd:Worker_ID"/></td> 
     <td><xsl:value-of select= "wd:Personal_Data/wd:Name_Data/wd:Legal_Name_Data/wd:Name_Detail_Data/wd:Last_Name"/></td> 
     <td><xsl:value-of select= "wd:Personal_Data/wd:Name_Data/wd:Legal_Name_Data/wd:Name_Detail_Data/wd:First_Name"/></td> 
     <td><xsl:if test = "wd:Personal_Data/wd:Contact_Data/wd:Address_Data/wd:Address_Line_Data[@wd:Type = ADDRESS_LINE_1]"><xsl:value-of select="wd:Personal_Data/wd:Contact_Data/wd:Address_Data/wd:Address_Line_Data[@wd:Type = ADDRESS_LINE_1]"/></xsl:if></td> 

前三列填充得很好,但第四列與if語句什麼也不做。根據收到的事先建議,我在xsl:if staatement的路徑開始處消除了流浪的「/」,但它仍然沒有任何作用。有任何想法嗎?我很感謝幫助,提前致謝,並感謝那些已經評論過的人!

+0

對於初學者來說,你有一個流浪領先'/'的'WD的面前:Personal_Data'在這最後的XPath,去除應該有所幫助, –

+0

您能給我們一個輸入XML的例子嗎?有沒有家庭地址?您提供的樣本沒有提供如何區分彼此的指示。另外,你能給我們一個更完整的視圖來看看你的XSLT是什麼樣子的,所以我們可以看到這個部分適合哪裏? – JLRishe

回答

0

與XSLT片段你顯示的問題是在XPath表達式開始使用/符號:

<xsl:if test = "/wd:Personal_Data/.... 

通過開始這個斜線XPath表達式,這意味着它是一個絕對錶達式,從頂層文檔元素開始。你只想要一個相對錶達這裏,相對於當前WD:Worker_Data元素

<xsl:if test = "wd:Personal_Data/wd:Contact_Data/wd:Address_Data/wd:Address_Line_Data[@wd:Type = ADDRESS_LINE_1]"> 
+0

謝謝,這解決了我的問題! –

相關問題