小编Dea*_*ane的帖子

XSLT文档中的模板以什么顺序执行,它们是否与源XML或缓冲输出匹配?

这是一直让我对XSLT感到困惑的事情:

  1. 模板的执行顺序是什么,以及
  2. 当它们执行时,它们是否匹配(a)原始源XML,或者(b)XSLT的当前输出到那一点?

例:

<person>
  <firstName>Deane</firstName>
  <lastName>Barker</lastName>
</person>
Run Code Online (Sandbox Code Playgroud)

这是XSLT的一个片段:

<!-- Template #1 -->
<xsl:template match="/">
  <xsl:value-of select="firstName"/> <xsl:value-of select="lastName"/>
</xsl:template>

<!-- Template #2 -->
<xsl:template match="/person/firstName">
  First Name: <xsl:value-of select="firstName"/>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

关于这个的两个问题:

  1. 我假设模板#1将首先执行.我不知道为什么我会这么想 - 是不是因为它首先出现在文件中?
  2. 模板#2会执行吗?它匹配源XML中的节点,但是当我们到达此模板时(假设它运行第二个),"firstName"节点将不在输出树中.

那么,"后来的"模板是否会受到"早期"模板中发生的事情的影响,或者它们是否对源文档进行操作,而忽略了"先前"转换为它们的内容?(所有这些单词都在引号中,因为当我真的不知道如何确定模板顺序时,我发现很难讨论基于时间的问题...)

在上面的例子中,我们有一个在根节点("/")上匹配的模板 - 当它完成执行时 - 基本上从输出中删除了所有节点.在这种情况下,这是否会抢占所有其他模板,因为在第一个模板完成后没有任何内容可以匹配?

到目前为止,我一直关注以后的模板没有执行,因为他们操作的节点没有出现在输出中,但反过来呢?"早期"模板是否可以创建"后期"模板可以执行某些操作的节点?

在与上面相同的XML上,考虑这个XSL:

<!-- Template #1 -->
<xsl:template match="/">
  <fullName>
    <xsl:value-of select="firstName"/> <xsl:value-of select="lastName"/>
  </fullName>
</xsl:template>

<!-- Template #2 -->
<xsl:template match="//fullName">
  Full Name: <xsl:value-of select="."/>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

模板#1创建一个名为"fullName"的新节点.模板#2在同一节点上匹配.模板#2会执行,因为当我们到达模板#2时,输出中存在"fullName"节点吗?

我意识到我对XSLT的"禅"一无所知.到目前为止,我的样式表包含一个匹配根节点的模板,然后从那里完全是程序性的.我厌倦了这样做.我宁愿真正理解XSLT,因此我的问题.

xslt

66
推荐指数
2
解决办法
2万
查看次数

你能安装一个不需要Visual Studio的独立TFS客户端吗?

是否可以在未安装Visual Studio的服务器上获得独立的TFS客户端?我们想要一种从服务器"进入"TFS项目的方法,而无需安装Visual Studio?

可能?我见过团队资源管理器,但没有Visual Studio会有用吗?

tfs visual-studio

52
推荐指数
4
解决办法
8万
查看次数

如何从代码隐藏中访问RouteData?

使用ASP.Net路由时,如何从代码隐藏中获取RouteData?

我知道你可以从RouteHandler的GetHttpHander方法获得它(你得到了RequestContext),但是你可以从代码隐藏中得到它吗?

有没有...

RequestContext.Current.RouteData.Values["whatever"];
Run Code Online (Sandbox Code Playgroud)

...你可以全局访问,就像你可以使用HttpContext一样?

或者是否只是从RouteHandler内部访问RouteData?

asp.net routing url-routing

48
推荐指数
2
解决办法
2万
查看次数

在C#中,如何单向序列化不可序列化?

通常,我需要序列化一个对象,用于记录或调试.这是一个单向序列化 - 我不需要稍后将其取回,我只需要将一个对象转换为字符串以将其写入某处.

是的,是的 - 这就是为什么你应该总是覆盖这个ToString方法.我知道这个.但我经常处理我没有写的对象,也无法改变.另外,我不想为我编写的每个类编写和更新ToString方法.

XML序列化提供了一个看似完美的解决方案 - 只需将该对象压缩为XML.但是有很多限制,特别是你不能序列化IDictionary,你必须有一个无参数的构造函数.我可以在课堂上解决这些问题,但是 - 再次 - 我经常和其他人一起上课.

那么,获得对象的综合字符串表示的解决方案是什么?有什么简单的东西我错过了吗?

c# serialization

44
推荐指数
2
解决办法
1110
查看次数

"编码","字符集"和"代码页"之间有什么区别?

我真的想用这些东西变得更好.我对这样的国际化概念非常有用,但我需要更好地了解它背后的理论.

我读过Spolsky的文章,但我仍然不清楚,因为这三个术语可以互换使用 - 即使在那篇文章中也是如此.我想其中至少有两个人在谈论同样的事情.

我怀疑很高比例的开发人员每天都会通过这些东西.我不想再成为那些开发者之一了.

encoding codepages

25
推荐指数
4
解决办法
7818
查看次数

21
推荐指数
2
解决办法
3557
查看次数

你如何使用Excel服务器端?

客户希望"启用Web"电子表格计算 - 用户指定某些单元格的值,然后在其他单元格中显示结果值.

(他们不希望向用户显示"类似电子表格"的界面.这不是UI问题.)

他们有一个巨大的电子表格,在很多很多工作表上都有很多计算.但是,最后,只有两件事情很重要 - (1)你将数字放在一张纸上的几个单元格中;(2)你从另一张纸上的几个单元格中得到相应的数字.剩下的就是一个黑盒子.

我想向用户提供一个UI来输入他们想要的数字,然后我想以编程方式打开Excel文件,设置数字,告诉它重新计算,并读出结果.

这可能/可取吗?是否有商业组件使这更容易?我不考虑他们的陷阱吗?

(我知道我可以使用Office Automation来执行此操作,但我知道不建议在服务器端执行此操作,因为它尝试在用户的上下文中运行,等等)

编辑:很多人都说我需要在代码中重新创建公式.然而,这将是非常复杂的.听起来这可能是一个已经解决的问题 - 是否有人知道某种类型的组件会为我做这件事?有人必须创建一些"Excel-formula-to-code"生成系统.我很乐意为此付出代价.

编辑/解决方案: 我正在寻找SpreadsheetGear.除此之外,它还允许您使用XLS作为计算器.您可以设置所选单元格的原始值,然后读出计算单元格的值.正是我在寻找什么.

asp.net excel

13
推荐指数
2
解决办法
2万
查看次数

在IIS中管理后台线程有哪些最佳实践?

我写了一个HttpModule,它产生了一个后台线程.我正在使用线程,就像在进程中运行的预定任务一样,这非常方便.

跟踪此主题的最佳做法是什么?我以前从未这样做过,而且我对它的某些方面感到有些困惑:

  1. 我怎么知道线程是否仍在运行?我认为它可以完成它的工作,但还有另一种方法可以知道它是否还活着吗?我下载procmon中,但w3wp.exe的产生一个一大堆的线程,所以我不知道这是我的线程.我命名了,但这没有用.

  2. 如果线程死了怎么"抓住"线程?是否存在某种Dispose方法,我可以将其写入EventLog或其他内容,如果它失败了?一个"垂死的宣言"还是什么?

  3. 如何主动停止线程?如果我希望它停止运行此后台进程,如何在不必退回IIS的情况下将其终止?

  4. 无论如何都要重新启动它,独立于HttpModule?(我猜这个答案是否定的......)

编辑:只是为了澄清,意图是我的线程永远不会消失.它运行一个函数,然后进入睡眠状态几分钟,然后唤醒并再次运行该函数.它不像是在完成一项任务然后结束.

asp.net multithreading httpmodule

12
推荐指数
2
解决办法
5490
查看次数

在使用反射调用静态方法时,如何通过ref传递参数?

我正在使用反射在对象上调用静态方法:

MyType.GetMethod("MyMethod", BindingFlags.Static).Invoke(null, new object[] { Parameter1, Parameter2 });
Run Code Online (Sandbox Code Playgroud)

你如何通过ref传递参数,而不是按值传递?我假设它们默认是按值计算的.第一个参数(数组中的"Parameter1")应该是ref,但我无法弄清楚如何以这种方式传递它.

.net c# reflection

12
推荐指数
1
解决办法
6197
查看次数

IIS如何知道它是在为Web站点还是Web应用程序项目提供服务?

据我所知,网站项目即时编译源代码,Web应用程序项目预编译源代码到DLL(很像ASP.Net 1.x).

但是如何在IIS中指定差异?

我知道Visual Studio知道 - 每个都有不同的项目,等等.但是运行实例(IIS + Framework)必须知道正在使用哪个编译模型,对吧?因为它如何知道是否即时编译?

请求进来,命中ASPX文件...以及进程如何知道是否需要编译关联的CS文件(Web站点),或者是否在部署之前已经完成(Web应用程序)?

我只是好奇指出了这种差异.在web.config的某个地方?

asp.net iis compilation

12
推荐指数
1
解决办法
4553
查看次数