Получение "префикса" soap "не определено" в файле xslt - PullRequest
6 голосов
/ 25 января 2011

Я пытаюсь преобразовать строку с данными XML (ответ от веб-службы).Я попытался начать с простого, просто получив имя:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/">
      <table>
        <tr>
          <th>Name</th>
        </tr>
        <xsl:for-each select="soap:Envelope/soap:Body/ABRSearchByABNResponse/ABRPayloadSearchResults/response/legalName/">
          <tr>
            <td>
              <xsl:value-of select="givenName"/>
            </td>      
          </tr>   
      </xsl:for-each>

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

Однако я получаю «префикс« мыло »не определен», как мне это исправить?Спасибо.

Ответы [ 2 ]

5 голосов
/ 25 января 2011

В XSLT любой префикс пространства имен, используемый в выражении XPath, должен быть определен в соответствующем объявлении пространства имен.

Это не относится к вашему коду и, следовательно, к ошибке.

Решение

Объявить пространство имен мыла:

<xsl:stylesheet version="1.0" 
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"     
 xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
 xmlns:soap="http://soap/envelope/"
>
0 голосов
/ 25 января 2011

Префикс пространства имен, soap в вашем случае, является просто сокращением для реального URI пространства имен. Чтобы избежать повсеместного http://soap/envelope/, вы можете определить, когда soap означает http://soap/envelope/, и использовать soap в остальной части документа.

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

Вы также можете объявить, что pizza соответствует http://soap/envelope/ и использовать его вместо этого. Префикс пространства имен soap не является специальным.

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