Используйте оператор if в 1 XSLT-файле для преобразования 2 различных типов XML файлов - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь использовать один XSLT-файл для преобразования 2 (или более) различных типов XML файлов.

Я надеялся, что найдется какой-нибудь способ проверить тип файла XML, проверив его значение "id", а затем запустив соответствующее преобразование.

Например,

XML файл 1:

<?xml version='1.0' ?>
<file1 id="123">
	<key>
            <uuid>123456</uuid>
	</key>
</file1>

XML файл 2:

<?xml version='1.0' ?>
<file2 id="456">
    <house>
        <doors>1</doors>
        <windows>4</windows>
    </house>
</file2>

XSLT-файл:

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


<html> 
<body> 
    <xsl:choose>

        <xsl:when test="@id = 123">
        // do something
        </xsl:when>
    
        <xsl:when test="@id = 456">
        // do something else
        </xsl:when>
    
        <xsl:otherwise>
        // exception message
        </xsl:otherwise>
    
    </xsl:choose>
</body> 
</html> 
</xsl:template> 
</xsl:stylesheet>   

Все файлы XML будут иметь одинаковые "id" в своих root, но я не могу понять, как запросить root для " id "значение?

1 Ответ

1 голос
/ 14 февраля 2020

Чтобы извлечь атрибут для элемента root (независимо от того, что root элемент равен ), используйте /*/@id.

<xsl:choose>

    <xsl:when test="/*/@id = 123">
        // do something
    </xsl:when>

    <xsl:when test="/*/@id = 456">
        // do something else
    </xsl:when>

    <xsl:otherwise>
        // exception message
    </xsl:otherwise>

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