Рег. проблема xmlns в преобразовании XSLT - PullRequest
0 голосов
/ 30 мая 2011

Я пытаюсь конвертировать xml из одного формата в другой, используя XslCompiledTransform в c #.Ниже приведена таблица стилей и исходный код xml:

string xslMarkup = @"<?xml version='1.0'?>
                            <xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'  xmlns:msxsl='urn:schemas-microsoft-com:xslt' exclude-result-prefixes='msxsl' version='1.0'>
                                <xsl:output method='xml' indent='yes'/>
                                <xsl:template match='/NewDataSet'>
                                    <Root>
                                        <xsl:apply-templates select='Violations'/>
                                    </Root>
                                </xsl:template>
                                <xsl:template match='Violations'>
                                    <detail ccr_id='{@ViolationID}' 
                                            assn_id=''      
                                            member_id='' 
                                            local_ccr_id='' 
                                            create_date='' 
                                            inspect_date='' 
                                            respond_date='' 
                                            last_inspect_date='' 
                                            status='' 
                                            active=''
                                            type=''
                                            description=''
                                            type_desc=''
                                            owner_action=''
                                            acc_action=''
                                            acc_action_date=''
                                            last_acc_action=''
                                            last_acc_action_date=''
                                            ccr_name=''
                                            location='' />
                                  </xsl:template>
                            </xsl:stylesheet>";

            XDocument xmlTree =
                XDocument.Parse(@"<?xml version='1.0' encoding='utf-8'?> 
                                    <NewDataSet xmlns='www.reefpt.com/caliberapi'>  
                                        <Violations>
                                              <ViolationID>66</ViolationID> 
                                              <ViolationNumber>201fgh4</ViolationNumber>
                                        </Violations>
                                        <Violations>
                                              <ViolationID>66</ViolationID> 
                                              <ViolationNumber>2011fgh</ViolationNumber>
                                        </Violations>
                                    </NewDataSet>
                                ");

При выполнении преобразования с использованием XslCompiledTransform я получаю следующее исключение: «Текст токена в состоянии Start приведет к недопустимому XML-документу. Убедитесь, чточто для параметра ConformanceLevel задано значение ConformanceLevel.Fragment или Conformanc eLevel.Auto, если вы хотите записать фрагмент XML. "Если я удаляю атрибут xmlns из корневого элемента, все работает нормально.Почему это происходит и как я могу это исправить?

1 Ответ

0 голосов
/ 30 мая 2011

Измените таблицу стилей на

string xslMarkup = @"<?xml version='1.0'?>
                            <xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'  xmlns:msxsl='urn:schemas-microsoft-com:xslt' xmlns:df="www.reefpt.com/caliberapi" exclude-result-prefixes='msxsl df' version='1.0'>
                                <xsl:output method='xml' indent='yes'/>
                                <xsl:template match='/df:NewDataSet'>
                                    <Root>
                                        <xsl:apply-templates select='df:Violations'/>
                                    </Root>
                                </xsl:template>
                                <xsl:template match='df:Violations'>
                                    <detail ccr_id='{@ViolationID}' 
                                            assn_id=''      
                                            member_id='' 
                                            local_ccr_id='' 
                                            create_date='' 
                                            inspect_date='' 
                                            respond_date='' 
                                            last_inspect_date='' 
                                            status='' 
                                            active=''
                                            type=''
                                            description=''
                                            type_desc=''
                                            owner_action=''
                                            acc_action=''
                                            acc_action_date=''
                                            last_acc_action=''
                                            last_acc_action_date=''
                                            ccr_name=''
                                            location='' />
                                  </xsl:template>
                            </xsl:stylesheet>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...