2015-09-19 3 views
1

Я искал везде, но все время придумываю ошибки. У меня есть этот XML-файл:XSLT по нестандартным XML

<vmix> 
<version>16.0.0.71</version> 
<inputs> 
<input key="38213dcd-5542-4440-9519-7288efebdd3b" number="1" type="Xaml"  title="ScoreBoardHD.xaml" state="Paused" position="0" duration="0" loop="False"  selectedIndex="0"> 
ScoreBoardHD.xaml 
<text index="0" name="HomeTitle">yyyyyyyyyyyyy</text> 
<text index="1" name="AwayTitle">Azzzzzzzzzzzzzzzz</text> 
<text index="2" name="HomeScore">15</text> 
<text index="3" name="AwayScore">2</text> 
</input> 
<input key="3873bbce-dc0f-4afd-a50b-3e60e74e7d57" number="2" type="Blank"  title="Blank" state="Paused" position="0" duration="0" loop="False">Blank</input> 
</inputs> 
<overlays> 
<overlay number="1"/> 
<overlay number="2"/> 
<overlay number="3"/> 
<overlay number="4"/> 
<overlay number="5"/> 
<overlay number="6"/> 
</overlays> 
<preview>1</preview> 
<active>1</active> 
<fadeToBlack>False</fadeToBlack> 
<transitions> 
<transition number="1" effect="Fade" duration="500"/> 
<transition number="2" effect="Merge" duration="1000"/> 
<transition number="3" effect="Wipe" duration="1000"/> 
<transition number="4" effect="CubeZoom" duration="1000"/> 
</transitions> 
<recording>False</recording> 
<external>False</external> 
<streaming>False</streaming> 
<playList>False</playList> 
<multiCorder>False</multiCorder> 
<audio> 
<master volume="100" muted="False" headphonesVolume="100"/> 
</audio> 
</vmix> 

Я пытаюсь извлечь это:

<text index="0" name="HomeTitle">yyyyyyyyyyyyy</text> 
<text index="1" name="AwayTitle">Azzzzzzzzzzzzzzzz</text> 
<text index="2" name="HomeScore">15</text> 
<text index="3" name="AwayScore">2</text> 

Но не может сформировать таким образом, что XSLT можно разобрать, потому что XML-видимому, Non Standard.

<xsl:for-each select="inputs/input/text"> 
    <tr> 
    <td><xsl:value-of select="HomeTitle"/></td> 
    <td><xsl:value-of select="HomeScore"/></td> 
    </tr> 

Поставляется пустым. Есть предположения?

+2

Недействительный xml-период ... вы можете только ожидать обработки _valid_ xml. Это именно тот текст, который у вас есть? Похоже, что последние три строки дублируются. –

+0

Спасибо, я исправил его. Его файл настроек из программы редактирования видео, и я пытаюсь получить текст, используемый для заголовков. Есть ли способ получить теги из файла? – columbuscountyschool

ответ

0

xsltproc, похоже, отлично справляется с XML, но в конце концов он довольно мягкий. Следующий XSLT производит «<tr><td>yyyyyyyyyyyyy</td><td>15</td></tr>», что вы хотели?

<xsl:template match="//inputs/input"> 
    <tr> 
     <td><xsl:value-of select="text[@name='HomeTitle']" /></td> 
     <td><xsl:value-of select="text[@name='HomeScore']" /></td> 
    </tr> 
</xsl:template> 
+0

Отлично. Спасибо!! – columbuscountyschool

+0

@columbuscountyschool рад, что я мог бы помочь! Не забудьте нажать зеленую галочку, чтобы принять ответ :) – tripflag

0

Нет ничего «нестандартного» в отношении вашего XML (в его текущей версии). Ваше выражение select="HomeTitle" в контексте inputs/input/text/ ничего не выбирает, потому что HomeTitle - это значение атрибута, а не имя дочернего элемента. Поэтому вам нужно выбрать его с помощью text[@name='HomeTitle'].

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