2009-10-22 4 views
0

У меня есть XML-файл, который очень длинный, но вот фрагмент снимка.применение xml к xslt help

<?xml version="1.0" encoding="UTF-8"?> 
<dicom> 
    <attr tag="00020000" vr="UL" len="4">190</attr> 
    <attr tag="00020001" vr="OB" len="2">00\01</attr> 
    <attr tag="00020002" vr="UI" len="30">1.2.840.10008.5.1.4.1.1.88.11</attr> 
    <attr tag="00080090" vr="PN" len="14">Roberts^^^Dr.^</attr> 
</dicom> 

У меня также есть файл xslt, который также очень длинный, но вот отрывок.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0"> 
    <xsl:output method="xml" indent="yes" media-type="text/xml-fo" encoding="UTF-8"/> 
    <!-- the stylesheet processing entry point --> 
    <xsl:template match="/"> 
     <xsl:apply-templates select="dicom"/> 
    </xsl:template> 

    <xsl:template match="dicom"> 
     TEST 
     <xsl:variable name="name" select="attr[@tag='00080090']"/> 
     <xsl:value-of select="$name"/> 
    </xsl:template> 
</xsl:stylesheet> 

У меня есть два вопроса. 1. Когда я применяю xml к xslt, я не получаю никакого вывода. После тестирования выясняется, что шаблон dicom даже не вызван. Почему это? 2. Если я изменяю критерии соответствия для шаблона dicom с «dicom» на «/», тогда он вызывает вызов, но переменная не устанавливается правильно.

Я знаю, что это не приведет к действительным XML, я просто пытаюсь выяснить, что происходит, и что не так с моим пониманием xslt.

Спасибо !!!

+0

Какой у вас XSLT-двигатель? Кстати, вы бы применили XSLT к входному документу XML (а не наоборот), может быть, есть некоторые недоразумения? –

ответ

3

Ваш образец работает для меня.

Пожалуйста, обратите внимание, что если соответствующий шаблон / просто делает xsl:apply-templates на dicom вы на самом деле это не нужно, поскольку есть уже встроенный шаблон, который будет соответствовать автоматически делать то же самое.

Смежные вопросы