XSLT получить 1 абзац от 1 сложного узла - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть следующий xml документ:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="egg.xsl"?>

<recipe>
  <name>Boiled eggs</name>
  <portion>4</portion>
  <preparation value="1" unit="min"/>
  <cooking value="3" unit="min"/>
  <ingredients>
    <i><name id="ing1">eggs</name><nb>4</nb></i>
  </ingredients>
  <guide>
    *Insert steps here* boil for <cooking value="3"
    unit="min"/> minutes. *More steps*
  </guide>
</recipe>

И я пытаюсь использовать следующий код xsl:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="space"><xsl:text> </xsl:text></xsl:variable>

<xsl:template match="/">
  <html>
    <head>
      <title><xsl:value-of select='recipe/name'/></title>
    </head>
    <body>
        <h1><xsl:value-of select='recipe/name'/></h1>
        <p>Portion: <xsl:value-of select='recipe/portion'/><br/>
        Preparation: <xsl:value-of select='recipe/preparation/@value'/><xsl:value-of select="$space"/><xsl:value-of select='recipe/preparation/@unit'/><br/>
        Cooking: <xsl:value-of select='recipe/cooking/@value'/><xsl:value-of select="$space"/><xsl:value-of select='recipe/cooking/@unit'/><br/>
        Ingredients: </p>
        <ul>
            <xsl:for-each select="recipe/ingredients/i">
                <li>
                    <xsl:choose>
                        <xsl:when test="nb">
                            <xsl:value-of select="nb"/><xsl:value-of select="$space"/>
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:value-of select="weight"/><xsl:value-of select="$space"/><xsl:value-of select="weight/@unit"/>s<xsl:value-of select="$space"/>of
                        </xsl:otherwise>
                    </xsl:choose>
                    <xsl:value-of select="name"/>
                </li>
            </xsl:for-each>
        </ul>
        <p>Guide:<br/>
        </p>
        <p><xsl:value-of select="recipe/guide"/></p>
    </body>
    </html>
</xsl:template>

Однако <xsl:value-of select="recipe/guide"/> не показывает стоимость приготовления / @ value (здесь это 3), и я не понимаю, как создать шаблон для его работы. Сейчас я получаю <p>*Insert steps here* boil for minutes. *More steps*</p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...