我想在显示之前检查xml。我正在使用XPath而不是xsl。对于例如
<title></title>
<url></url>
<submit></submit>
我想检查一下xml数据是否存在。然后不要显示它。因为我把这些值放在<a href=<%#container.dataitem,url%>>new link</a>.
所以我希望如果url是空的,那么不显示新的链接,否则显示它,类似的标题,如果标题不为空显示它否则不显示它。
主要问题是我可以在ascx.cs文件中查看
if(iterator.current.value="")
不显示它,但问题出在ascx文件i givin
<a href="">new link</a>
如果网址为空,我希望不会出现新的链接... 知道怎么检查这个条件吗?
答案 0 :(得分:0)
使用XPath。假设元素包含在名为link
的元素中:
link[title != '' and url !='']
将找到link
和title
子元素不包含后代文本节点的url
元素。为了使它更具防弹性,
link[normalize-space(title) != '' and normalize-space(url) !='']
将保持表达式与link
或title
子项包含空格的url
元素匹配。
答案 1 :(得分:0)
如果您无法访问.cs文件,那么您仍然可以将代码直接嵌入.ascx文件中。请记住,您不必将所有代码放在代码隐藏文件中,它可以直接放在.ascx文件中。
<%
if(iterator.current.value!="") {
%>
<a href=<%#container.dataitem,url%>>new link</a>
<%
}
%>
答案 2 :(得分:0)
我看到过使用asp:Literal控件处理它。
在网络表单中,您有<asp:Literal id='literal' runat='server' text='<%# GetAnchorTag(container.dataitem) %>' />
在后面的代码中,你有:
protected string GetAnchorTag(object dataItem) {
if(dataItem != null) {
string url = Convert.ToString(DataBinder.Eval(dataItem, "url"));
if(!string.IsNullOrEmpty(url)) {
string anchor = /* build your anchor tag */
return anchor;
}
}
return string.Empty;
}
这样,您可以输出完整的锚标记或空字符串。我不知道这将如何适合您的标题和提交节点,但它解决了锚点显示问题。
就个人而言,我不喜欢这种做法,但我已经看过很多了。
答案 3 :(得分:0)
//a[not(./@href) or not(text()='']