Апострофы в XML и элементах управления с привязкой к данным - PullRequest
1 голос
/ 01 марта 2010

В моем XML апостроф может появиться в значении узла:

<Root>
    <Sections>
        <SectionA>
            <Heading>Title</Heading>
            <Description>This is section 'A'</Description>
        </SectionA>
    </Sections>
</Root>

Если у меня есть элементы управления, связанные с этим XML:

<asp:FormView ID="myFormView" runat="server" DataSourceID="myXmlDataSource">
    <ItemTemplate>
        <div>
            HTML Element:
            <input type="text" value='<%# XPath("text()") %>' />
        </div>
        <div>    
            Server Control:
            <asp:TextBox id="myTextBox" runat="server" value='<%# XPath("text()") %>' />
        </div>
    </ItemTemplate>
</asp:FormView>           
<asp:XmlDataSource ID="myXmlDataSource" runat="server" XPath="Root/Sections/SectionA" />

Я заметил, что текст правильно отображается в asp: TextBox, но не в элементе INPUT. Я предполагаю, что это потому, что серверные элементы управления правильно избегают апострофа. Чтобы обойти это, я попытался изменить узел Description в XML следующим образом:

<Description>This is section &#39;A&#39;</Description>

Опять же, это правильно отображается в asp: TextBox, но не в элементе INPUT.

Моя следующая попытка заключалась в том, чтобы обернуть значение узла в CDATA:

<Description><![CDATA[This is section &#39;A&#39;]]></Description>

Наконец, оно корректно отображалось в элементе INPUT, но теперь asp: TextBox отображает два «& # 3 9;». Я даже попробовал "& p o s;" но результат тот же.

Каков наилучший подход к использованию апострофов в XML, когда значение может отображаться либо в элементе управления сервера, либо в элементе HTML?

Ответы [ 2 ]

1 голос
/ 01 марта 2010

Здесь у вас есть одинарные кавычки, окружающие значение аргумента для элемента html:

 <input type="text" value='<%# XPath("text()") %>' />

Это делает:

value='This is section 'A'' 

Вместо этого используйте двойные кавычки:

 <input type="text" value="<%# XPath("text()") %>" />

Что делает:

<input type="text" value="This is section 'A'" />
0 голосов
/ 01 марта 2010

Использовать & apos; вместо. Это один из 5 разрешенных объектов в XML.

Итак, ваш код будет выглядеть так:

<Description>This is section &apos;A&apos;</Description>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...