2015-09-11 196 views
1

我想將一個節點集存儲在我的變量中。我有這樣的事情:XSLT 1.0將nodeset存儲在變量中

<xsl:variable name="kontrahenci"> 
    <xsl:for-each select="RAKS_R3/EXPORT/KONTAKTY/WIERSZ"> 
     <xsl:element name="WIERSZ"> 
      <xsl:attribute name="ID"> 
       <xsl:value-of select="@ID"/> 
      </xsl:attribute> 
      <!--<xsl:attribute name="KONTO_AKWIZYTORA"> 
       <xsl:value-of select="DANE_DODATKOWE/WIERSZ[1]/@KONTO_AKWIZYTORA"/> 
      </xsl:attribute>--> 
     </xsl:element> 
    </xsl:for-each> 
</xsl:variable> 

我的XML文件:

<?xml version="1.0" encoding="UTF-8"?> 
<RAKS_R3> 
    <EXPORT ID="1" DATA_EKSPORTU="2015-09-08" EKSPORTUJACY="ADMIN" WERSJA="24"> 
     <RAPORTY_KASOWE> 
     <WIERSZ ID="2" ID_KASY="0" WALUTA_DOMYSLNA="PLN" NUMER="RK\0001\00" DATA_WYSTAWIENIA="2015-09-08" DATA_POCZATKU="2015-09-08" DATA_KONCA="2015-09-08" WALUTA="PLN" ID_WZORCA_RAPORTU="203" ID_PIERWSZEGO_DOKUMENTU="1" ID_OSTATNIEGO_DOKUMENTU="1" SALDO_OTWARCIA="0" SALDO_ZAMKNIECIA="50" NUMER_SERYJNY="1" NAZWA_WZORCA="RK" ZAREJESTROWAL="ADMIN" ZMODYFIKOWAL="ADMIN" DATA_REJESTRACJI="2015-09-08 15:57:07" DATA_MODYFIKACJI="2015-09-08 15:57:07" NUMER_ANALITYKI_KASY="" NAZWA_KASY="Kasa" KOD_WZORCA="RK"> 
      <DOKUMENTY_KASOWE> 
       <WIERSZ ID="2" ID_WZORCA_DOKUMENTU="201" ID_KASY="0" ID_KONTAKTU="5" NUMER="KP\0001\00" TYP_DOKUMENTU="G" DATA_WYSTAWIENIA="2015-09-08" KWOTA="50" WALUTA="PLN" ROZLICZONY="False" WAZNY="True" KOD_KIERUNKU="I" ID_WNIOSKU_O_ZALICZKE="" ID_RAPORTU_KASOWEGO="2" OPIS="" ID_METODY_PLATNOSCI="0" NUMER_SERYJNY="1" ID_WALUTY="0" DOKUMENT_ZEWNETRZNY="False" KWOTA_PLN="50" ID_ROZRACHUNKU="29" ZAREJESTROWAL="ADMIN" ZMODYFIKOWAL="ADMIN" DATA_REJESTRACJI="2015-09-08 15:57:01" DATA_MODYFIKACJI="2015-09-08 15:57:01" KONTAKT_NAZWA_SKROCONA="n" KONTAKT_NAZWA_PELNA="n" KONTAKT_MIEJSCOWOSC="" KONTAKT_KOD_POCZTOWY="" KONTAKT_ULICA="" KONTAKT_NUMER_BUDYNKU="" KONTAKT_NUMER_LOKALU="" KONTAKT_NIP="" NAZWA_SERII_NUMERACYJNEJ="KP" ZNACZNIKI="" NUMER_DOKUMENTU_HANDLOWEGO="" /> 
      </DOKUMENTY_KASOWE> 
     </WIERSZ> 
     </RAPORTY_KASOWE> 
     <ROZRACHUNKI> 
     <WIERSZ ID="29" TYP_ROZR="Z" ID_KONTAKTU="5" KOD_WAL="PLN" DATA_OPER="2015-09-08" DATA_PLAT="" KWOTA="50" KWOTA_WAL="0" OPIS="KP\0001\00" KONTAKT_NAZWA_SKROCONA="n" KONTAKT_NIP="" /> 
     </ROZRACHUNKI> 
     <KONTAKTY> 
     <WIERSZ ID="5" ID_GRUPY="" NAZWA_GRUPY="" NAZWA_SKROCONA="n" NAZWA_PELNA="n" AKWIZYTOR="True" DOSTAWCA="False" ODBIORCA="False" KOD_KRESKOWY="" NIP="" TYP_KONTAKTU="0" ID_ADRESU_DOMYSLNEGO="4" ULICA="" NUMER_BUDYNKU="" NUMER_LOKALU="" KOD_POCZTOWY="" MIEJSCOWOSC="" WOJEWODZTWO="" KRAJ="Polska" KOD_KRAJU_UE="PL" UWAGI="" NEW_ID="" SPRZ_DETAL="0" KOD_WALUTY="PLN" POWIAT="" GMINA="" KOD_GMINY_WG_GUS="" POCZTA="" GLN=""> 
      <ADRESY> 
       <WIERSZ NEW_ID="" ID="4" ULICA="" NUMER_DOMU="" NUMER_LOKALU="" KOD_POCZTOWY="" MIEJSCOWOSC="" WOJEWODZTWO="" KRAJ="Polska" NAZWA_TYPU="Adres firmowy" POWIAT="" GMINA="" KOD_GMINY_WG_GUS="" POCZTA="" GLN="" /> 
      </ADRESY> 
      <DANE_DODATKOWE> 
       <WIERSZ ID="5" KONTO_AKWIZYTORA="00001" KONTO_DOSTAWCY="" KONTO_ODBIORCY="" KONTO_PRACOWNIKA="" ID_TYPU_FIRMY="" NAZWA_TYPU_FIRMY="" REGON="" NUMER_REJESTRU_SADOWEGO="" PESEL="" NUMER_DOWODU_OS="" DATA_WYDANIA_DOWODU_OS="" ORGAN_WYDAJACY_DOWOD_OS="" PLATNIK_VAT="False" ROLNIK_INDYWIDUALNY="False" MAKS_WARTOSC_DLUGU_WOBEC_DOSTAWCY="0" MAKS_ILOSC_DOKUMENTOW_SPRZED_W_KREDYCIE="0" MAKS_ILOSC_DOKUMENTOW_SPRZED_W_KREDYCIE_PRZETERM="0" ID_AKWIZYTORA="" PROWIZJA="0" MAKS_WARTOSC_KREDYTU_DLA_KLIENTA="0" MAKS_WARTOSC_KREDYTU_DLA_KLIENTA_PRZETERM="0" ID_SPOSOBU_ZAPLATY="" ID_SPOSOBU_ZAPLATY_DOST="" SPOSOB_LICZENIA_DOST="0" ID_RODZAJU_CENY="" ID_RABATU="" ID_WALUTY="" KOD_WALUTY="" NAZWA_WALUTY="" MNOZNIK="" ID_PLATNIKA="" BLOKADA="False" BLOKADA_POWOD="" KREDYT="0" DLUG="0" NEW_FIRM_ID="" NEW_SM_ID="" ID_NAGLOWKA="5" NEW_WORKER_ID="" MASS_PAYMENT_NR="" NASZ_NUMER_U_KONTRAHENTA="" IMIE_PIERWSZE="" IMIE_DRUGIE="" NAZWISKO="" NAZWISKO_RODOWE="" NAZWA_WYSWIETLANA="" PLEC="" DATA_URODZENIA="" JEZYK="" NARODOWOSC="" OBYWATELSTWO="" HOBBY="" WSPOLMALZONEK="" URODZINY_WSPOLMALZONKA="" ROCZNICA_SLUBU="" ZLECENIOWY="" ETATOWY="" ARCHIWALNY="0" DATA_ROZP_ROZLICZEN="" TYP_DOK_TOZSAMOSCI="" IMIE_OJCA="" IMIE_MATKI="" MIEJSCE_URODZENIA="" TYTUL_NAUKOWY="" US_NAZWA="" US_ULICA="" US_DOM="" US_KOD_POCZTOWY="" US_MIEJSCOWOSC="" NR_AKTU_MALZENSTWA="" WSPOLNE_GOSPODARSTWO="" WYNAGRODZENIE_PRZELEWEM="" KOD_ODDZIALU_NFZ="" DOK_TOZS_WYDANY_PRZEZ="" DOK_TOZS_WAZNY_OD="" DOK_TOZS_WAZNY_DO="" IDENTYFIKATOR_PODATKOWY="" IDENTYFIKATOR_PLATNIKA="" ID_ADRESU_DO_DEKLARACJI="" KRAJ_DO_DEKLARACJI="" IDENT_DO_DEKLARACJI="" RODZAJ_IDENT_DO_DEKLARACJI="" NIEREZYDENT="" /> 
      </DANE_DODATKOWE> 
     </WIERSZ> 
     </KONTAKTY> 
    </EXPORT> 
</RAKS_R3> 

它不工作變量爲空,是否有可能存儲在變量在XSLT 1.0設置節點?

+1

「*變量爲空*」您是如何確定這一點的?當你定義變量時,上下文(當前節點)是什麼? - 請注意,在XSLT 1.0中,必須使用擴展函數將變量的內容從* result-tree-fragment *轉換爲* node-set *。但是,如果變量真的是空的,這將無濟於事。 –

回答

1

在XSLT-1.0,您需要使用擴展,尤其是node-set extension

您將需要增加您的樣式表的根目錄下面的聲明:

  xmlns:exsl="http://exslt.org/common" 
      extension-element-prefixes="exsl"> 

,然後你可以使用您的作爲像這樣的節點(例如)變量:

<xsl:value-of select="exsl:node-set($kontrahenci)/some/xpath" /> 

或這樣的:

<xsl:for-each select="exsl:node-set($kontrahenci)/some/xpath"> 

您可能也有興趣在list of processors實施exslt。

+0

我在Visual Studio 2013中遇到錯誤'前綴'exslt'未定義。'好的沒關係。小姐角色。在第一個例子中,應該是exsl:node-set ... –

+0

@DominikS在第一個例子中還有一個't' - 我糾正了這個錯字。 – potame

+0

它似乎不工作,我有 然後< xsl:value-of select =「exsl:node-set($ kon)」/>,它什麼都不顯示 –