EDIT для включения дополнительной информации.Использование «value-of-select» для выбора второго атрибута
Я использую Telestream Vantage для преобразования XML в то, что Telestream называют меткой метаданных.
Простая методика заключается в следующем:
- Создайте свой Ярлык набор метаданных в консоли Vantage управления
- Экспорт Метку набор метаданных как XML
- Из XML создать XSL, который будет «полоса 'из предоставленного XML и заполнить поля набора меток.
У меня есть XML, генерируемый FFProbe, который выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<ffprobe:ffprobe xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:ffprobe='http://www.ffmpeg.org/schema/ffprobe' xsi:schemaLocation='http://www.ffmpeg.org/schema/ffprobe ffprobe.xsd'>
<programs>
</programs>
<streams>
<stream index="1" channels="1"/>
<stream index="2" channels="1"/>
<stream index="3" channels="1"/>
<stream index="4" channels="1"/>
<stream index="5" channels="1"/>
<stream index="6" channels="1"/>
<stream index="7" channels="1"/>
<stream index="8" channels="1"/>
<stream index="9" channels="1"/>
<stream index="10" channels="1"/>
<stream index="11" channels="1"/>
<stream index="12" channels="1"/>
<stream index="13" channels="1"/>
<stream index="14" channels="1"/>
<stream index="15" channels="1"/>
<stream index="16" channels="1"/>
<stream index="17" channels="1"/>
<stream index="18" channels="1"/>
<stream index="19" channels="1"/>
<stream index="20" channels="1"/>
<stream index="21" channels="1"/>
<stream index="22" channels="1"/>
<stream index="23" channels="1"/>
<stream index="24" channels="1"/>
<stream index="25" channels="1"/>
<stream index="26" channels="1"/>
<stream index="27" channels="1"/>
<stream index="28" channels="1"/>
<stream index="29" channels="1"/>
<stream index="30" channels="1"/>
<stream index="31" channels="1"/>
<stream index="32" channels="1"/>
<stream index="33" channels="1"/>
<stream index="34" channels="1"/>
<stream index="35" channels="1"/>
<stream index="36" channels="1"/>
<stream index="37" channels="1"/>
<stream index="38" channels="1"/>
<stream index="39" channels="1"/>
<stream index="40" channels="1"/>
</streams>
И я пытаюсь экстракт атрибут «каналы» из каждой строки, используя следующее заявление (s):
<soa:Parameter type="int32" identifier="0c000188-c401-4b99-91dc-8e15ebcb7981" bindable="True" name="Stream 01" enabled="true" disableable="false" optionseditable="false" row="-1" column="-1" columnspan="1">
<xsl:value-of select="default:ffprobe/default:streams[1]/default:stream[1]/@channels"/>
</soa:Parameter>
Как вы можете видеть, это раздел «Значение выбора», на который я смотрю. Для каждого последующего блока я увеличить «поток» ссылка:
<xsl:value-of select="default:ffprobe/default:streams[1]/default:stream[n]/@channels"/>
Затем я запустить Vantage рабочего процесс, который принимает XML-файл в качестве вложения, а затем применяет «Transform» с использованием таблицы стилей и метки целевых метаданных Задавать.
Где я просматриваю набор меток метаданных, все мои значения равны 0, а не 1 в соответствии с импортированным XML-файлом. Мои навыки XSL крайне отсутствуют, но любая помощь будет очень признательна.
"* похоже, что не работает *" не является хорошим описанием проблемы. Пожалуйста, разместите достаточно кода, чтобы мы могли воспроизвести проблему, и покажем нам ожидаемый результат - P.S. Вам нужно узнать (по крайней мере) о инструкции 'xsl: for-each'. –
Извинения Майкл, я обновил исходное сообщение, чтобы добавить дополнительную информацию. Я не знаю, могу ли я использовать инструкцию xsl: for-each, учитывая, что мне нужно сопоставить каждое извлеченное значение с определенным параметром в моем Vantage XSL. По крайней мере, выглядит ли конструкция моего xsl: value-of-select? –