Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 6 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 07.05.2003
Откуда: Москва
Код:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="1xsl.xsl"?>
<shop>
   <computer>
      <proc>
      3500
      </proc>
<x>123</x>
   </computer>
</shop>

Код:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.x.ru" version="1.0">

<xsl:template match="/">
процессор: <xsl:value-of select="proc"/>MHz
</xsl:template>


</xsl:stylesheet>


должно ведь писать "процессор: 3500MHz" ,а пишет "процессор: MHz", т.е. не вставляет значение выбранное.. подскажите плиз..

_________________
Вы все еще жарите на AMD??? Тогда мы идем к Вам!
подпись: Intel & Ko -----------------------> (C) Smoke



Партнер
 

Member
Статус: Не в сети
Регистрация: 07.05.2003
Откуда: Москва
неужели никто не знает?

_________________
Вы все еще жарите на AMD??? Тогда мы идем к Вам!
подпись: Intel & Ko -----------------------> (C) Smoke


 

Member
Статус: Не в сети
Регистрация: 07.05.2003
Откуда: Москва
(((

_________________
Вы все еще жарите на AMD??? Тогда мы идем к Вам!
подпись: Intel & Ko -----------------------> (C) Smoke


 

Member
Статус: Не в сети
Регистрация: 19.09.2004
Откуда: Львов,Украина
для начала стоит правильно указать namespace для xsl, а именно:

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

затем разберёмся что есть твой <template match="/">... Все XPath запросы нужно делать с учётом контекста, а находясь внутри темплейта у тебя контекст: "/", то есть самый верх дерева. В этом контексте доступным элементом является "shop", а искомый "proc" находится в "shop/computer/proc". Однако если мы так и запишем то в случае с множеством "computer"ов будет возвращатся множество, поэтому правильно написать так:
Код:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="computer">
Процессор: <xsl:value-of select="proc"/> MHz
</xsl:template>

</xsl:stylesheet>


а ещё правильней:

Код:
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/">
<html>
<head>
<title>Компьтеры</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="computer">
Процессор: <xsl:value-of select="proc"/>MHz
</xsl:template>


</xsl:stylesheet>


ЗЫ: Советую купить книгу Валикова "Техонлогия XSLT".


 

Member
Статус: Не в сети
Регистрация: 07.05.2003
Откуда: Москва
хм..значит,собственно, ошибка была в неправильном пространстве имен?
но почему так? вроде читал,что можно задавать свое пространство имен...

_________________
Вы все еще жарите на AMD??? Тогда мы идем к Вам!
подпись: Intel & Ko -----------------------> (C) Smoke


 

Member
Статус: Не в сети
Регистрация: 19.09.2004
Откуда: Львов,Украина
конечно можно свои пространства имён создавать, только XSL stylesheet должен быть в "http://www.w3.org/1999/XSL/Transform" пространстве.
в качестве твоего случая на примере покажу как создать своё пространство:
Код:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="file.xsl"?>
<smoke:shop xmlns:smoke="http://www.smoke-ov.ru/" xmlns:iv="http://www.ivanobulo-ov.ua/" >
   <smoke:computer>
      <smoke:proc>3500</smoke:proc>
   <smoke:x>123</smoke:x>
   </smoke:computer>

<iv:computer>
      <iv:proc>3500</iv:proc>
   <iv:x>123</iv:x>
   </iv:computer>

</smoke:shop>


ну и трансформация:

Код:
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:smoke="http://www.smoke-ov.ru/"
   xmlns:ivanobulo="http://www.ivanobulo-ov.ua/"
   version="1.0">

<xsl:template match="/">
<html>
<head>
<title>Компьтеры</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="smoke:computer">
Процессор: <xsl:value-of select="smoke:proc"/>MHz
<br/>
</xsl:template>

<xsl:template match="ivanobulo:computer">
<b>Processor: <xsl:value-of select="ivanobulo:proc"/>MHz</b>
<br/>
</xsl:template>


</xsl:stylesheet>


Результат будет таким:

Процессор: 3500MHz
Processor: 3500MHz

Обрати внимание что значение алиаса пространства не имеет значения ("iv" в xml и "ivanobulo" в xsl), имеет значение только URI этого пространства.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 6 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan