我想在变量中存储一个节点集。像这样:
<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 001 0" 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 001 0" 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 001 0" 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的变量中存储节点集?
在XSLT-1.0中,需要使用扩展,特别是node-set
扩展
您需要在样式表的根目录中添加以下声明:
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">
您可能还对实现exslt的处理器列表感兴趣。