В моем 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 'A'</Description>
Опять же, это правильно отображается в asp: TextBox, но не в элементе INPUT.
Моя следующая попытка заключалась в том, чтобы обернуть значение узла в CDATA:
<Description><![CDATA[This is section 'A']]></Description>
Наконец, оно корректно отображалось в элементе INPUT, но теперь asp: TextBox отображает два «& # 3 9;». Я даже попробовал "& p o s;" но результат тот же.
Каков наилучший подход к использованию апострофов в XML, когда значение может отображаться либо в элементе управления сервера, либо в элементе HTML?