2010-02-24 2 views
0

Я застрял с чем-то, что, вероятно, довольно просто решить, но не имеет понятия.XSL help для создания разделенных запятой XML

Мои данные XML выглядит следующим образом: -

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="GetTicketCategories.xsl"?> 
<ArrayOfCategory xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://test.com/test/"> 
    <Category> 
    <Name>Benefits</Name> 
    <Count>29</Count> 
    </Category> 
    <Category> 
    <Name>Building Control</Name> 
    <Count>4</Count> 
    </Category> 
</ArrayOfCategory> 

XSL файл: -

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!-- Edited by XMLSpy® --> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:output method="text"/> 
<xsl:template match="Category"> 

<xsl:value-of select="Name"/> 
<xsl:text>, </xsl:text> 
<xsl:value-of select="Count"/> 
<xsl:text>, </xsl:text> 

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

Выход: -

Benefits29Building Control4 

Там, кажется, проблема с верхний элемент, где ему не нравится его форматирование, например <ArrayOfCategory xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://ctronix.com/smartticketservice/">

Я не в состоянии изменить XML, но если я упрощаю код работает, как показано ниже: -

Измененное XML: -

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="GetTicketCategories.xsl"?> 
<ArrayOfCategory> 
    <Category> 
    <Name>Benefits</Name> 
    <Count>29</Count> 
    </Category> 
    <Category> 
    <Name>Building Control</Name> 
    <Count>4</Count> 
    </Category> 
</ArrayOfCategory> 

XSL: -

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!-- Edited by XMLSpy® --> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:output method="text"/> 
<xsl:template match="ArrayOfCategory/Category"> 

<xsl:value-of select="Name"/> 
<xsl:text>, </xsl:text> 
<xsl:value-of select="Count"/> 
<xsl:text>, </xsl:text> 

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

Правильный выход: -

Benefits, 29, Building Control, 4, 

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

<ArrayOfCategory xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://ctronix.com/smartticketservice/"> 

в разделе соответствия шаблона.

Должен признаться, что я полный новичок; Любая помощь будет очень высоко ценится.

Приветствия

Богатые

ответ

0

Похоже, что первый шаблон XSL вы вывесили ничего не соответствует, поэтому он по умолчанию выводит все элементы текста.

Вы должны изменить матч шаблона - использовать /ArrayOfCategory/Category, что переводится «от корня XML, выбрать все ArrayOfCategory/Категория»:

<?xml version="1.0" encoding="ISO-8859-1"?> 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 

<xsl:template match="/ArrayOfCategory/Category"> 

    <xsl:value-of select="Name"/> 
    <xsl:text>, </xsl:text> 
    <xsl:value-of select="Count"/> 
    <xsl:text>, </xsl:text> 

</xsl:template> 
</xsl:stylesheet> 
+0

Как просто! большое спасибо – 2010-02-24 10:59:41

0

Вы должны ссылаться на XSL пространства имен используется в XML , Проверьте XSL:

 
<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:t="http://test.com/test/"> 
    <xsl:output method="text"/> 
    <xsl:template match="t:ArrayOfCategory/t:Category"> 
    <xsl:value-of select="t:Name"/> 
    <xsl:text>,</xsl:text> 
    <xsl:value-of select="t:Count"/> 
    <xsl:text>,</xsl:text> 
    </xsl:template> 
</xsl:stylesheet> 

С этим XML:

 
<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="GetTicketCategories.xsl"?> 
<ArrayOfCategory xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://test.com/test/"> 
    <Category> 
    <Name>Benefits</Name> 
    <Count>29</Count> 
    </Category> 
    <Category> 
    <Name>Building Control</Name> 
    <Count>4</Count> 
    </Category> 
</ArrayOfCategory> 

Результат:

 
Benefits,29,Building Control,4,