这是一直让我对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)
关于这个的两个问题:
那么,"后来的"模板是否会受到"早期"模板中发生的事情的影响,或者它们是否对源文档进行操作,而忽略了"先前"转换为它们的内容?(所有这些单词都在引号中,因为当我真的不知道如何确定模板顺序时,我发现很难讨论基于时间的问题...)
在上面的例子中,我们有一个在根节点("/")上匹配的模板 - 当它完成执行时 - 基本上从输出中删除了所有节点.在这种情况下,这是否会抢占所有其他模板,因为在第一个模板完成后没有任何内容可以匹配?
到目前为止,我一直关注以后的模板没有执行,因为他们操作的节点没有出现在输出中,但反过来呢?"早期"模板是否可以创建"后期"模板可以执行某些操作的节点?
在与上面相同的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,因此我的问题.
是否可以在未安装Visual Studio的服务器上获得独立的TFS客户端?我们想要一种从服务器"进入"TFS项目的方法,而无需安装Visual Studio?
可能?我见过团队资源管理器,但没有Visual Studio会有用吗?
使用ASP.Net路由时,如何从代码隐藏中获取RouteData?
我知道你可以从RouteHandler的GetHttpHander方法获得它(你得到了RequestContext),但是你可以从代码隐藏中得到它吗?
有没有...
RequestContext.Current.RouteData.Values["whatever"];
Run Code Online (Sandbox Code Playgroud)
...你可以全局访问,就像你可以使用HttpContext一样?
或者是否只是从RouteHandler内部访问RouteData?
通常,我需要序列化一个对象,用于记录或调试.这是一个单向序列化 - 我不需要稍后将其取回,我只需要将一个对象转换为字符串以将其写入某处.
是的,是的 - 这就是为什么你应该总是覆盖这个ToString方法.我知道这个.但我经常处理我没有写的对象,也无法改变.另外,我不想为我编写的每个类编写和更新ToString方法.
XML序列化提供了一个看似完美的解决方案 - 只需将该对象压缩为XML.但是有很多限制,特别是你不能序列化IDictionary,你必须有一个无参数的构造函数.我可以在课堂上解决这些问题,但是 - 再次 - 我经常和其他人一起上课.
那么,获得对象的综合字符串表示的解决方案是什么?有什么简单的东西我错过了吗?
我真的想用这些东西变得更好.我对这样的国际化概念非常有用,但我需要更好地了解它背后的理论.
我读过Spolsky的文章,但我仍然不清楚,因为这三个术语可以互换使用 - 即使在那篇文章中也是如此.我想其中至少有两个人在谈论同样的事情.
我怀疑很高比例的开发人员每天都会通过这些东西.我不想再成为那些开发者之一了.
客户希望"启用Web"电子表格计算 - 用户指定某些单元格的值,然后在其他单元格中显示结果值.
(他们不希望向用户显示"类似电子表格"的界面.这不是UI问题.)
他们有一个巨大的电子表格,在很多很多工作表上都有很多计算.但是,最后,只有两件事情很重要 - (1)你将数字放在一张纸上的几个单元格中;(2)你从另一张纸上的几个单元格中得到相应的数字.剩下的就是一个黑盒子.
我想向用户提供一个UI来输入他们想要的数字,然后我想以编程方式打开Excel文件,设置数字,告诉它重新计算,并读出结果.
这可能/可取吗?是否有商业组件使这更容易?我不考虑他们的陷阱吗?
(我知道我可以使用Office Automation来执行此操作,但我知道不建议在服务器端执行此操作,因为它尝试在用户的上下文中运行,等等)
编辑:很多人都说我需要在代码中重新创建公式.然而,这将是非常复杂的.听起来这可能是一个已经解决的问题 - 是否有人知道某种类型的组件会为我做这件事?有人必须创建一些"Excel-formula-to-code"生成系统.我很乐意为此付出代价.
编辑/解决方案: 我正在寻找SpreadsheetGear.除此之外,它还允许您使用XLS作为计算器.您可以设置所选单元格的原始值,然后读出计算单元格的值.正是我在寻找什么.
我写了一个HttpModule,它产生了一个后台线程.我正在使用线程,就像在进程中运行的预定任务一样,这非常方便.
跟踪此主题的最佳做法是什么?我以前从未这样做过,而且我对它的某些方面感到有些困惑:
我怎么知道线程是否仍在运行?我认为它可以完成它的工作,但还有另一种方法可以知道它是否还活着吗?我下载procmon中,但w3wp.exe的产生一个一大堆的线程,所以我不知道这是我的线程.我命名了,但这没有用.
如果线程死了怎么"抓住"线程?是否存在某种Dispose方法,我可以将其写入EventLog或其他内容,如果它失败了?一个"垂死的宣言"还是什么?
如何主动停止线程?如果我希望它停止运行此后台进程,如何在不必退回IIS的情况下将其终止?
无论如何都要重新启动它,独立于HttpModule?(我猜这个答案是否定的......)
编辑:只是为了澄清,意图是我的线程永远不会消失.它运行一个函数,然后进入睡眠状态几分钟,然后唤醒并再次运行该函数.它不像是在完成一项任务然后结束.
我正在使用反射在对象上调用静态方法:
MyType.GetMethod("MyMethod", BindingFlags.Static).Invoke(null, new object[] { Parameter1, Parameter2 });
Run Code Online (Sandbox Code Playgroud)
你如何通过ref传递参数,而不是按值传递?我假设它们默认是按值计算的.第一个参数(数组中的"Parameter1")应该是ref,但我无法弄清楚如何以这种方式传递它.
据我所知,网站项目即时编译源代码,Web应用程序项目预编译源代码到DLL(很像ASP.Net 1.x).
但是如何在IIS中指定差异?
我知道Visual Studio知道 - 每个都有不同的项目,等等.但是运行实例(IIS + Framework)必须知道正在使用哪个编译模型,对吧?因为它如何知道是否即时编译?
请求进来,命中ASPX文件...以及进程如何知道是否需要编译关联的CS文件(Web站点),或者是否在部署之前已经完成(Web应用程序)?
我只是好奇指出了这种差异.在web.config的某个地方?
asp.net ×4
c# ×2
.net ×1
codepages ×1
comments ×1
compilation ×1
encoding ×1
excel ×1
httpmodule ×1
iis ×1
reflection ×1
routing ×1
tfs ×1
url-routing ×1
xslt ×1