Получение тега из XML-документа в XSL - PullRequest
0 голосов
/ 24 октября 2018

Я хочу создать приложение погоды и чтобы это работало, мне нужно иметь возможность получить специальный тег из XML-файла.Мне удалось получить определенный дочерний узел, но я не могу получить тег.

Моя основная цель - получить тег "value =" 4 "при температуре.

Мой XMLи XSL-файл показан ниже:

XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html" />
<xsl:template match="/">

<html>
<head>
<title>Sjekk været</title>
<link rel="stylesheet" type="text/css" href="weather.css"/>
</head>
<body>

<h1>Været og valutaen i Kanada:</h1>



<table>

  <tr>
    <th>Vær</th>
    <th>Norske kroner</th>
    <th>Kanadiske dollar</th>
  </tr>

    <xsl:for-each select="valuta/valutakurs[land='Canada']/overforsel">
    <xsl:for-each select="document('http://www.yr.no/sted/Canada/Ontario/Toronto/varsel.xml')/weatherdata/forecast/tabular/time">
  <tr>
    -------> I want to show the tag in this field<-------
    <td><xsl:value-of select="temperature"/></td>
    <td>1 NOK</td>
    <td><xsl:value-of select="kjop"/> CAD</td>
  </tr>
</xsl:for-each>
</xsl:for-each>

</table>


</body>
</html>

</xsl:template>
</xsl:stylesheet>

XML:

<weatherdata>
<location>...</location> 
<credit>...</credit> <links>...</links> 
<meta>...</meta> 
<sun rise="2018-10-24T07:43:16" set="2018-10-24T18:19:47"/> 
<forecast> 
<tabular> 
<time from="2018-10-24T07:00:00" to="2018-10-24T12:00:00" period="1"> 
<!-- Valid from 2018-10-24T07:00:00 to 2018-10-24T12:00:00 --> 
<symbol number="3" numberEx="3" name="Delvis skyet" var="03d"/> 
<precipitation value="0"/> 
<!-- Valid at 2018-10-24T07:00:00 --> 
<windDirection deg="317.9" code="NW" name="Nordvest"/> 
<windSpeed mps="3.7" name="Lett bris"/> 
<temperature unit="celsius" value="4"/> 
<pressure unit="hPa" value="1024.5"/> </time>

1 Ответ

0 голосов
/ 24 октября 2018

Чтобы ответить на ваш ближайший вопрос, чтобы получить значение температуры во внешнем документе, сделайте следующее:

<xsl:value-of select="temperature/@value"/>

Это потому, что value является «атрибутом» элемента temperature, поэтому вы используете префикс @ для обозначения атрибутов.

Однако у вас также будет проблема с получением элемента kjop, потому что в тот момент, когда вы пытаетесь его получить, вы находитесь в контекстевашего внешнего документа, тогда как kjop является элементом вашего исходного документа.Итак, вам нужно сохранить ссылку на элемент в исходном документе, чтобы вы могли вернуться к нему, когда начнете выбирать из внешнего документа.

Попробуйте этот фрагмент:

<xsl:for-each select="valuta/valutakurs[land='Canada']/overforsel">
  <xsl:variable name="overforsel" select="." />
  <xsl:for-each select="document('http://www.yr.no/sted/Canada/Ontario/Toronto/varsel.xml')/weatherdata/forecast/tabular/time">
    <tr>
      <td><xsl:value-of select="temperature/@value"/></td>
      <td>1 NOK</td>
      <td><xsl:value-of select="$overforsel/kjop"/> CAD</td>
    </tr>
  </xsl:for-each>
</xsl:for-each>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...