![]() |
XML-форумы |
Обсуждение XML и связанных с ним технологий |
Автор | Сообщение | |
---|---|---|
Zafo Новичок Зарегистрирован: 14.02.2009 Сообщения: 1 |
[13562]
Сб Фев 14, 2009 14:31
Всем привет!
XSLT и IMS CP Meta-data У меня вот какая проблема. Есть XML-файл с метаданными, построенными по модели IMS CP: <?xml version="1.0"?> <?xml-stylesheet type='text/xsl' href='cut_items.xsl'?> <manifest xmlns="http://www.imsglobal.org/xsd/imscp_v1p1" xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_v1p2" xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 http://www.imsglobal.org/xsd/imscp_v1p1.xsd http://www.imsglobal.org/xsd/imsmd_v1p2 http://www.imsglobal.org/xsd/imsmd_v1p2.xsd" idetifier=""Manifest1-CECCFF-3201-1342-8F42-3DFFF12F4198" version="IMS CP 1.1.4"> <organizations default="org_0001_0123456789"> <organization identifier="org_0001_0123456789" structure="hierarchical"> <title>Organization 1</title> <item identifier="item_sec_0000_0123456789" isvisible="true"> <title>Title 1</title> <metadata></metadata> </item> </organization> </organizations> </manifest> Мне из него нужны только элементы <item> и значения узлов <title>. Написал XSLT-шаблон (cut_items.xsl), который должен их находить. Однако фрагмент кода <xsl:template match="//item"> <xsl:value-of select="count(//@identifier)"/> </xsl:template> выводит ноль. Кто-нибудь может предложить решение? Я понимаю, что здесь должно быть все очень просто, но почему-то туплю =) -------------------------------------- UPD: О! Доперло. Можно сделать выборку <xsl:for-each select="//*[starts-with(@identifier, 'item')]"> <xsl:value-of select="*[1]"/> </xsl:for-each> И тогда мы увидим только содержание узла <title> ![]() |
|
olpa Любитель Зарегистрирован: 23.04.2002 Сообщения: 981 Откуда: Санкт-Петербург ![]() |
[13566]
Вт Фев 17, 2009 09:40
Это потому, что шаблон написан для элементов с полным именем "{}item", а в исходном XML'е полное имя у элемента "{http://www.imsglobal.org/xsd/imscp_v1p1}item". В XSLT надо объявить пространство имён xmlns:xxx="http://www.imsglobal.org/xsd/imscp_v1p1" и в match использовать "//xxx:item". |
Страница 1 из 1 |