Я новичок в XML и XSLT и потратил немного времени на то, что должно быть довольно простым случаем поиска и замены. Я просто не могу понять, что синтаксис правильный.Основные преобразования XML/XSLT: поиск и замена
Общая цель этого упражнения - заменить значения «Y» и «N» в элементе «NewCustomer» на «true» или «false» соответственно.
Вот мои данные образца.
<?xml version="1.0"?>
<CustomerList>
<Customer>
<CustomerID>1111</CustomerID>
<CompanyName>Sean Chai</CompanyName>
<City>New York</City>
<NewCustomer>N</NewCustomer>
</Customer>
<Customer>
<CustomerID>1112</CustomerID>
<CompanyName>Tom Johnston</CompanyName>
<City>Los Angeles</City>
<NewCustomer>N</NewCustomer>
</Customer>
<Customer>
<CustomerID>1113</CustomerID>
<CompanyName>Institute of Art</CompanyName>
<City>Chicago</City>
<NewCustomer>Y</NewCustomer>
</Customer>
</CustomerList>
Вот таблица стилей трансформации.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Identity Template (applies to all nodes and will copy all nodes -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Customer">
<xsl:choose>
<xsl:when test="NewCustomer = 'Y'">
<xsl:text>true</xsl:text>
</xsl:when>
<xsl:when test="NewCustomer = 'N'">
<xsl:text>false</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Вот мой вывод.
<?xml version="1.0" encoding="utf-8" ?>
<CustomerList>false false true</CustomerList>
Вот что я хочу, чтобы он выводил.
<?xml version="1.0"?>
<CustomerList>
<Customer>
<CustomerID>1111</CustomerID>
<CompanyName>Sean Chai</CompanyName>
<City>New York</City>
<NewCustomer>false</NewCustomer>
</Customer>
<Customer>
<CustomerID>1112</CustomerID>
<CompanyName>Tom Johnston</CompanyName>
<City>Los Angeles</City>
<NewCustomer>false</NewCustomer>
</Customer>
<Customer>
<CustomerID>1113</CustomerID>
<CompanyName>Institute of Art</CompanyName>
<City>Chicago</City>
<NewCustomer>true</NewCustomer>
</Customer>
</CustomerList>
Что мне не хватает и почему? Я вижу, что если я опустил пункты, где я исследую NewCustomer, весь вывод будет выводиться. Тем не менее, выбирая вывод правильно измененных значений для результатов NewCustomer, отображаются только их отображаемые. Есть ли ссылка на предыдущий шаблон, который я должен сделать во втором шаблоне?
Хорошее объяснение, +1. – Tomalak
+1 для эффективного ответа на вопрос о том, почему часть вопроса. – GuruM