Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 基于另一个节点的属性,使用属性值选择节点_Xml_Xslt - Fatal编程技术网

Xml 基于另一个节点的属性,使用属性值选择节点

Xml 基于另一个节点的属性,使用属性值选择节点,xml,xslt,Xml,Xslt,我是XSLT新手,我想选择 biblioteka/ksiazki/ksiazka/tytul 基于 biblioteka/osoby/osoba/wypozyczenie[@idKsiazki] 换句话说:基于@idKsiazki从wypozyczenie查找ksiazka[@id=@idKsiazki]/tytul。 我不能使用静态值作为示例“hp1”,因为我是在中进行此操作的,@idKsiazki会发生变化 然而,我试图在这里找到答案,但没有人真的能帮上忙。 以下是我的xml代码:

我是XSLT新手,我想选择

biblioteka/ksiazki/ksiazka/tytul
基于

biblioteka/osoby/osoba/wypozyczenie[@idKsiazki]
换句话说:基于
@idKsiazki
wypozyczenie
查找
ksiazka[@id=@idKsiazki]/tytul
。 我不能使用静态值作为示例“hp1”,因为我是在
中进行此操作的,
@idKsiazki
会发生变化

然而,我试图在这里找到答案,但没有人真的能帮上忙。 以下是我的xml代码:

    <?xml version="1.0" encoding="utf-8"?>
<biblioteka>
    <osoby>
        <osoba plec="M">
            <imie>Karol</imie>
            <nazwisko>Karolowski</nazwisko>
            <adres>
                <miejscowosc>Kołczygłowy</miejscowosc>
                <ulica>Pomorska</ulica>
                <nr-domu>5</nr-domu>
                <kod-pocztowy>76-200</kod-pocztowy>
            </adres>
            <dane_kontaktowe>
                <tel-stac>123412312</tel-stac>
                <tel-kom>213214321</tel-kom>
                <e-mail>gfdfd@gmail.com</e-mail>
            </dane_kontaktowe>
            <konto>
                <login>KKarolowski</login>
                <haslo>123</haslo>
            </konto>
            <wypozyczenie idKsiazki="prj2">
                <dataWypozyczenia>2014-04-08</dataWypozyczenia>
                <dataZwrotu>2014-04-10</dataZwrotu>
            </wypozyczenie> 
        </osoba>
        <osoba plec="K">
            <imie>Marlena</imie>
            <nazwisko>Marlenowska</nazwisko>
            <adres>
                <miejscowosc>Białystog</miejscowosc>
                <ulica>Szybka</ulica>
                <nr-domu>99</nr-domu>
                <kod-pocztowy>76-200</kod-pocztowy>
            </adres>
            <dane_kontaktowe>
                <tel-stac>213214321</tel-stac>
                <tel-kom>123412312</tel-kom>
                <e-mail>gfdfd@gmail.com</e-mail>
            </dane_kontaktowe>
            <konto>
                <login>MMarlenowska</login>
                <haslo>123</haslo>
            </konto>
            <wypozyczenie idKsiazki="hp1">
                <dataWypozyczenia>2014-04-08</dataWypozyczenia>
                <dataZwrotu>2014-04-10</dataZwrotu>
            </wypozyczenie> 
        </osoba>
    </osoby>
    <ksiazki>
        <ksiazka oprawa="twarda" id="hp1">
            <tytul>Harry Potter i Książę Półkrwi</tytul>
            <autor>Joanne K. Rowling</autor>
            <opis>Po nieudanej próbie przechwycenia przepowiedni Lord</opis>
            <id>hp1</id>
        </ksiazka>
        <ksiazka oprawa="twarda" id="asm5">
            <tytul>Programowanie Asembler IBM PC</tytul>
            <autor>Peter Abel</autor>
            <opis>Ta książka jest zarówno podręcznikiem</opis>
            <id>asm5</id>
        </ksiazka>
        <ksiazka oprawa="miekka" id="lond1">
            <tytul>Londyn - przewodnik</tytul>
            <autor>Kathleen Becker</autor>
            <opis>Z przewodnikiem z nowej serii "Marco Polo"</opis>
            <id>lond1</id>
        </ksiazka>
        <ksiazka oprawa="miekka" id="prajav2">
            <tytul>Programowanie obiektowe i zdarzeniowe w Javie</tytul>
            <autor>Krzysztof Barteczko</autor>
            <opis>W książce przedstawiono</opis>
            <id>prjav2</id>
        </ksiazka>
        <ksiazka oprawa="twarda" id="kldv3">
            <tytul>Kod Leonarda da Vinci</tytul>
            <autor>Dan Brown</autor>
            <opis>W Luwrze zostaje popełnione morderstwo.</opis>
            <id>kldv3</id>
        </ksiazka>
    </ksiazki>
</biblioteka>
这是我的XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:key name="ksiazka-by-id" match="ksiazka" use="@id" />

<xsl:template match="/">
<xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html&gt;</xsl:text>
<html>
<head></head>
<body>
  <h2>Biblioteka</h2>

    <xsl:for-each select="biblioteka/osoby/osoba">

<div><br />
      <xsl:value-of select="imie"/>&nbsp;
      <xsl:value-of select="nazwisko"/>
      <p>Wypozyczone ksiazki:</p>

Nazwa: //here the book name

      <br/>
      Data Wypozyczenia: <xsl:value-of select="wypozyczenie/dataWypozyczenia"/><br />
      Data Zwrotu: <xsl:value-of select="wypozyczenie/dataZwrotu"/>
     </xsl:for-each>
</div>

</body>
</html>
</xsl:template>
</xsl:stylesheet>

!DOCTYPE html
藏书馆

Wypozyczone ksiazki:

Nazwa://这里是书名
数据Wypozyczenia:
数据Zwrotu:
XSLT有一个内置的机制来解析交叉引用。下面是一个简化的示例:

XSLT1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:key name="ksiazka-by-id" match="ksiazka" use="@id" />

<xsl:template match="/biblioteka">
    <result>
        <xsl:for-each select="osoby/osoba">
            <xsl:copy>
                <xsl:copy-of select="@plec | imie | nazwisko"/>
                <lookup>
                    <xsl:for-each select="wypozyczenie">
                        <xsl:copy-of select="key('ksiazka-by-id', @idKsiazki)/tytul"/>
                    </xsl:for-each>
                </lookup>
            </xsl:copy>
        </xsl:for-each>
    </result>
</xsl:template>

</xsl:stylesheet>

应用于输入示例,结果将是:

<result>
  <osoba plec="M">
    <imie>Karol</imie>
    <nazwisko>Karolowski</nazwisko>
    <lookup/>
  </osoba>
  <osoba plec="K">
    <imie>Marlena</imie>
    <nazwisko>Marlenowska</nazwisko>
    <lookup>
      <tytul>Harry Potter i Książę Półkrwi</tytul>
    </lookup>
  </osoba>
</result>

卡罗尔
卡洛洛夫斯基
马丽娜
马勒诺夫斯卡
哈利波特一世

请发布到目前为止的XSLT和预期输出。
<result>
  <osoba plec="M">
    <imie>Karol</imie>
    <nazwisko>Karolowski</nazwisko>
    <lookup/>
  </osoba>
  <osoba plec="K">
    <imie>Marlena</imie>
    <nazwisko>Marlenowska</nazwisko>
    <lookup>
      <tytul>Harry Potter i Książę Półkrwi</tytul>
    </lookup>
  </osoba>
</result>