标记档案: XSLT

XSLT 和 jQuery 样本

我做了很多的 XSLT 和 jQuery 和思想会分享他人在将来可能会发现有用的几个片段.

示例 1: 发出简单 JavaScript / 在 XSLT jQuery:

<xsl:模板匹配 ="的东西" xml:空间 ="维护">

  <!– 出查询友好筛选器隐藏字段保留为空 –>
  <脚本类型 ="文本/javascript">
    $(文档).准备好了(功能(){
      $(""#QueryFriendlyFilters).瓦尔("空");
    });
  </脚本>

</xsl:模板>

这位会发出一些等待完成加载页面的 JavaScript (由于 $(文档).准备好了(…)) 和则集命名隐藏的字段的值为 QueryFriendlyFilters,"空"的文本值.

示例 2: 使用 <xsl:如果> 要检查"大于",  "小于", 等.

<xsl:模板匹配 ="的东西" xml:空间 ="维护">

  <div id ="fdcAllFilters">
 
    <xsl:如果 test="@Count>0">
      <跨类 ="fdcFilterLabel">当前的筛选器:</大跨度>
    </xsl:如果>

    <!– 在这里发生了更多的东西. –>

</xsl:模板>

在上面的代码段检查名为"计数"的"东西"元素的属性是否大于零。  这背后的 XML 就像:”

<东西计数 ="5"/>

示例 3: 循环访问所有元素, 排布 jQuery 的调用.

<!– 遍历的所有筛选器,并显示正确  链接. –>
<xsl:为每个选择 ="UserFilter">

  <一类 ="FilterHref" href ="javascript:mySubmitPage('' RemoveUserFilter,'{@ ID}’)">[X]</一>

  <跨类 ="fdcFilterLabel"><xsl:值的 select="@FilterValue"/></大跨度>

  <脚本类型 ="文本/javascript">

    $(文档).准备好了(功能(){
        <xsl:文本><![CDATA[$(""#QueryFriendlyFilters).瓦尔( ($(""#QueryFriendlyFilters).瓦尔() + " ]]></xsl:文本>\"<xsl:值的 select="@FilterValue"/>\"<xsl:文本><![CDATA["));]]></xsl:文本>
    });

  </脚本>

</xsl:为每个>

上面的代码段是最复杂的可能还有更容易的方法做这件事.

这背后的 XML 大致如下:

<UserFilter ID ="123"FilterValue ="xyzzy"/>

此代码段循环访问 <UserFilter> 节点。 

它首先发出锚标签,单击时调用已经在页面上的 JavaScript 函数, "mySubmitPage",并传递的属性的值 <UserFilter> 名为"ID"的节点。 

然后,它会发出一些等待加载页面的 jQuery。  那 jQuery 更新隐藏的字段命名为"QueryFriendlyFilters"中添加 FilterValue 属性的值。  请注意所有疯狂 <xsl:文本> 和 <![CDATA[ … ]]> 东西.

就是这样, 希望它可以帮助!

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

无止境地嵌套 <div> 标记和 jQuery

这似乎是一个古怪的话题, 我不确定这的确值得有关的博客, 但是,从未停止过我, 所以在这里我们去 微笑

我正在那里我揪一些数据从搜索一个项目, 打包成一条 XML 消息,然后该 XML 是最终转换为 XSLT 通过 HTML。  有很多的 jQuery 涉及, 其中一位实现一些制表符的功能。  当您单击某个选项卡上 (真的, 一 <div>), jQuery 调用.hide() 和.show() 对各种 div (初始页面加载下载的所有内容,所以在这种情况下有没有回发).

一群小时前, 选项卡切换逻辑开始运行不稳定,它不会显示我的选项卡中的一个。  我最终跟踪它的事实,ie 浏览器 (至少) 原以为, <div> 远嵌套标签, 远远超过预期。开发商工具栏将显示:

-<div id ="Tab1Content">
  -<div>
    -<div>
      -<div id ="Tab2Content">
        -<div>
           …………………………
                   </div>  <— — 最后展示它关闭一路了这里!

所以, 如果我做了 $("#"Tab1Content).隐藏(), 我还会隐藏前台,我可能永远不会告诉前台是否我还没显示标签页 1。  我复制并粘贴代码到 visual studio 和它很好地显示所有 div 的衬砌起来的, 就像他们应该做的事情, 看起来像这:

-<div id ="Tab1Content">
  +<div>
  +<div>
-<div id ="Tab2Content">
  +<div>
  +<div>

我的头靠在墙上打了一会儿,并注意到在实际的 HTML 代码产生大量的空 <div> 标签, 像:

<正文>

  <div id ="Tab1Content">

    <div id ="第一行"/>
    <div id ="行 2"/>

  </div>

  <div id ="Tab2Content">

    <div id ="第一行"/>
    <div id ="行 2"/>

  </div>

</正文>

(以上是过于简单化的 waaaaaaaaaaaay。  空的 div 标签都是完全有效. 一些我 <div> 标记是内容的完整, 但更多的不是。  我认识到,那我 <xsl:为每个> 指令发出短型 div 标签时 xsl:对于每个才 ' 找到的任何数据。  被迫输出的 HTML 注释, 如图所示:

image

 

毕竟这样做, 所有 div 的很好地都排队和我选项卡切换开始工作.

如往常一样, 我希望这将有助于在必要时有人.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

示例: XSLT 创建 HTML Href

我最近做的 XSL 东西一点了,以为我会把在一起的样本供我将来的参考,这可能是对我们所有人的价值的 XSLT ers 在互联网中谋生.

请考虑下面的 XML:

<FdcSearchTabsCollection Count ="2">
  <SearchTab 标签 ="产业" 排序次序 ="00"标签 ="行业"SearchConstraints ="contenttype:行业" TabID ="831b2a74-98c4-4453-8061-86e2fdb22c63"/>
  <SearchTab 标签 ="做法" 排序次序 ="01"标签 ="做法"SearchConstraints ="contenttype:PracticeGroups" TabID ="678e206b-6996-421f-9765-b0558fe1a9c0"/>
</FdcSearchTabsCollection>

下面的 XSL 代码片断将生成 hrefs 选项卡排序的的列表:

<xsl:模板匹配 ="FdcSearchTabsCollection" xml:空间 ="维护">
   
    <!– "全" 选项卡 –>
    <a href ="javascript:ViewTab(全部)">查看所有</一>
   
    <!– 每个单独的选项卡 –>
    <!– 遍历所有选项卡,并显示正确  链接. –>
    <xsl:对于每个选择 ="SearchTab">
      <xsl:排序 select="@SortOrder"/>

      …
      <a href ="javascript:ViewTab(‘{@ TabID}’)"><xsl:值的 select="@Label"/></一>
    </xsl:为每个>

    <br /> 
   

   </xsl:模板>

这里是什么它看起来像在 SharePoint 中:

SNAGHTML78aa2cb

 

 

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin