2015-03-02 6 views
1

Я новичок в XML и XSLT. То, что я пытаюсь сделать, - это преобразование XSLT, которое соответствует типу альбома/имени элемента из моего XML-документа и преобразует их значения в ссылку. То, что у меня есть, составляет половину этого. Я не понимаю, как получить ссылки. Любые советы о том, как это сделать, будут оценены.Почему в моем XSLT-преобразовании выпало большинство XML-тегов?

Редактировать: используя xsltproc -o new_inventory.xml music_inventory.xsl music_inventory.xml с приведенными ниже XML и XSLT, кажется, что он помещает ссылки в то, что я хотел, но я получаю сообщение об ошибке, что документ пуст, когда я пытаюсь просмотреть из браузера.

Здесь находится new_inventory.xml, созданный вышеуказанной командой. (Обратите внимание, как нет никаких XML-теги вокруг каких-либо элементов не принимает ссылку.)

<?xml version="1.0"?> 


    Led Zepplin 
    <id><a xmlns="http://www.w3.org/1999/xhtml" href="LEDZEP.xhtml">Mothership</a$ 
    1968 
    Atlantic 
    1 
    1 

    Good Times Bad Times 
    Communication Breakdown 
    Dazed and Confused 
    Babe I'm gonna Leave You 
    Whole Lotta Love 
    Ramble On 
    Heartbreaker 
    Immigrant Song 
    Since I've Been Loving You 

XML:

<music_inventory> 
<album id="LEDZEP" type="full_length" albumart="http://upload.wikimedia.org/wikipedia/en/c/cb/Led_Zeppelin_-_Mothership.jpg"> 
    <artist>Led Zepplin</artist> 
    <name>Mothership</name> 
    <year>1968</year> 
    <label>Atlantic</label> 
    <disc>1</disc> 
    <totaldiscs>1</totaldiscs> 
    <tracklist> 
    <track id="1">Good Times Bad Times</track> 
    <track id="2">Communication Breakdown</track> 
    <track id="3">Dazed and Confused</track> 
    <track id="4">Babe I'm gonna Leave You</track> 
    <track id="5">Whole Lotta Love</track> 
    <track id="6">Ramble On</track> 
    <track id="7">Heartbreaker</track> 
    <track id="8">Immigrant Song</track> 
    <track id="9">Since I've Been Loving You</track> 
    <track id="10">Rock and Roll</track> 
    <track id="11">Black Dog</track> 
    <track id="12">When the Levee Breaks</track> 
    <track id="13">Stairway to Heaven</track> 
    </tracklist> 
</album> 
<album id="SUBL" type="full_length" albumart="http://upload.wikimedia.org/wikipedia/en/thumb/9/94/Sublime_Self-Titled.jpg/220px-Sublime_Self-Titled.jpg"> 
    <artist>Sublime</artist> 
    <name>Sublime</name> 
    <year>1996</year> 
    <label>MCA</label> 
    <disc>1</disc> 
    <totaldiscs>1</totaldiscs> 
    <tracklist> 
    <track id="1">Garden Grove</track> 
    <track id="2">What I Got</track> 
    <track id="3">Wrong Way</track> 
    <track id="4">Same in the End</track> 
    <track id="5">April 29, 1992 (Miami)</track> 
    <track id="6">Santeria</track> 
    <track id="7">Seed</track> 
    <track id="8">Jailhouse</track> 
    <track id="9">Pawn Shop</track> 
    <track id="10">Paddle Out</track> 
    <track id="11">The Ballad of Johnny Butt</track> 
    <track id="12">Burritos</track> 
    <track id="13">Under My Voodoo</track> 
    <track id="14">Get Ready</track> 
    <track id="15">Caress Me Down</track> 
    <track id="16">What I Got (Reprise)</track> 
    <track id="17">Doin' Time</track> 
    </tracklist> 
</album> 
</music_inventory> 

XSLT

<xsl:template match="album/name"> 
    <id> 
    <a xmlns="http://www.w3.org/1999/xhtml" 
     href="{../@id}.xhtml"> 
     <xsl:value-of select="."/> 
    </a> 
    </id> 
    </xsl:template> 
+0

Не могли бы вы показать нам ожидаемый выход трансформация? –

+0

Спасибо за ответ @ michael.hor257k, см. Выше. Я внесла некоторые изменения в мой вопрос. Я ожидаю новый xml-файл (new_inventory.xml), который идентичен исходному xml, кроме гиперссылок, которые используют идентификатор для имени сервера (либо subl, либо ledzep), и использует атрибуты в теге artist для текста гиперссылки. – exeleon

+0

Пожалуйста, напишите свой ожидаемый результат ** как код **, а не как описание. В частности, эта часть «* гиперссылок, которые используют идентификатор для имени сервера (либо subl, либо ledzep) *», не ясна. –

ответ

2

уведомление, как есть никакие теги xml вокруг каких-либо элементов не принимают ссылку

Если добавить тождественное преобразование к вашему XSLT,

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

    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="album/name"> 
    <id> 
     <a xmlns="http://www.w3.org/1999/xhtml" 
     href="{../@id}.xhtml"> 
     <xsl:value-of select="."/> 
     </a> 
    </id> 
    </xsl:template> 

</xsl:stylesheet> 

Вы получите недостающие теги XML обратно вместе с вашими ссылками:

<?xml version="1.0" encoding="UTF-8"?><music_inventory> 
<album id="LEDZEP" type="full_length" albumart="http://upload.wikimedia.org/wikipedia/en/c/cb/Led_Zeppelin_-_Mothership.jpg"> 
    <artist>Led Zepplin</artist> 
    <id><a xmlns="http://www.w3.org/1999/xhtml" href="LEDZEP.xhtml">Mothership</a></id> 
    <year>1968</year> 
    <label>Atlantic</label> 
    <disc>1</disc> 
    <totaldiscs>1</totaldiscs> 
    <tracklist> 
    <track id="1">Good Times Bad Times</track> 
    <track id="2">Communication Breakdown</track> 
    <track id="3">Dazed and Confused</track> 
    <track id="4">Babe I'm gonna Leave You</track> 
    <track id="5">Whole Lotta Love</track> 
    <track id="6">Ramble On</track> 
    <track id="7">Heartbreaker</track> 
    <track id="8">Immigrant Song</track> 
    <track id="9">Since I've Been Loving You</track> 
    <track id="10">Rock and Roll</track> 
    <track id="11">Black Dog</track> 
    <track id="12">When the Levee Breaks</track> 
    <track id="13">Stairway to Heaven</track> 
    </tracklist> 
</album> 
<album id="SUBL" type="full_length" albumart="http://upload.wikimedia.org/wikipedia/en/thumb/9/94/Sublime_Self-Titled.jpg/220px-Sublime_Self-Titled.jpg"> 
    <artist>Sublime</artist> 
    <id><a xmlns="http://www.w3.org/1999/xhtml" href="SUBL.xhtml">Sublime</a></id> 
    <year>1996</year> 
    <label>MCA</label> 
    <disc>1</disc> 
    <totaldiscs>1</totaldiscs> 
    <tracklist> 
    <track id="1">Garden Grove</track> 
    <track id="2">What I Got</track> 
    <track id="3">Wrong Way</track> 
    <track id="4">Same in the End</track> 
    <track id="5">April 29, 1992 (Miami)</track> 
    <track id="6">Santeria</track> 
    <track id="7">Seed</track> 
    <track id="8">Jailhouse</track> 
    <track id="9">Pawn Shop</track> 
    <track id="10">Paddle Out</track> 
    <track id="11">The Ballad of Johnny Butt</track> 
    <track id="12">Burritos</track> 
    <track id="13">Under My Voodoo</track> 
    <track id="14">Get Ready</track> 
    <track id="15">Caress Me Down</track> 
    <track id="16">What I Got (Reprise)</track> 
    <track id="17">Doin' Time</track> 
    </tracklist> 
</album> 
</music_inventory> 
Смежные вопросы