Javascript 生成要应用于XML文件的XSL
我有下面的xml,并修改了一个xsl文件,该文件来自我开始学习时遵循的教程。返回的HTML包含我在XSL中指定的字符串,但是没有填充XML文件中的实际值 解决方案可能非常简单,不过现在我需要有人向我指出这一点 XML:Javascript 生成要应用于XML文件的XSL,javascript,css,xml,xslt,Javascript,Css,Xml,Xslt,我有下面的xml,并修改了一个xsl文件,该文件来自我开始学习时遵循的教程。返回的HTML包含我在XSL中指定的字符串,但是没有填充XML文件中的实际值 解决方案可能非常简单,不过现在我需要有人向我指出这一点 XML: dskim@gmail.com 约翰 3. 雌鹿 聊天 120 EHFD 如果没有代理,则留下关闭请求 被另一方删除 XSL: 电邮- 名字: 识别并创建联系人: 姓氏: 媒体类型: 信息: 离职原因: - 我的目标是获取我试图通过XSL检索的字段的文本值,然后再检索一
dskim@gmail.com
约翰
3.
雌鹿
聊天
120
EHFD
如果没有代理,则留下关闭请求
被另一方删除
XSL:
电邮-
名字:
识别并创建联系人:
姓氏:
媒体类型:
信息:
离职原因:
-
我的目标是获取我试图通过XSL检索的字段的文本值,然后再检索一些标记属性。问题在于XPath。首先,您缺少了
userInfo
步骤,其次您需要一个针对属性的谓词
例如,对于电子邮件地址:
chatTranscript/newParty/userInfo/userData/item[@key="EmailAddress"]
没有名为“EmailAddress”的节点。这里有一个项
节点,其@key属性的值为“EmailAddress”
您的其他XPath也有类似的问题。例如,对于其他人,您不仅省略了
userInfo
,而且还省略了userData
。您的计算机存在一些严重的问题。对元素的属性使用谓词([…]
)将极大地改进代码
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/chatTranscript/newParty[count(*) > 1]">
<xsl:variable name="curParty" select="@userId" />
Email - <xsl:value-of select="userData/item[@key='EmailAddress']"/>
Fist Name: <xsl:value-of select="userData/item[@key='FirstName']"/>
Identify Create Contact: <xsl:value-of select="userData/item[@key='IdentifyCreateContact']"/>
Last Name: <xsl:value-of select="userData/item[@key='LastName']"/>
Media Type: <xsl:value-of select="userData/item[@key='MediaType']"/>
Message: <xsl:value-of select="../message[@userId=$curParty]/msgText/text()"/>
Reason for leaving: <xsl:value-of select="normalize-space(../partyLeft[@userId=$curParty])" />
</xsl:template>
<xsl:template match="text()" />
</xsl:stylesheet>
对于以后的文章,请记住XML和XSLT代码不被视为代码片段,因此不能在这里运行。另外,显示预期的输出。谢谢你为什么在这个问题上加上标签?最后,你的标题太笼统了,没有说明你的具体问题。。。我满意地回答了这个问题。尽管@MathiasMüller可能对我的问题或答案的格式有批评,但关键是我们进行了充分的沟通以完成这项工作。不要去抨击(和否决投票)你自己无法回答的问题。@Harriet我根本没有抨击;你一定误解了我(现已删除)的评论。我对这个问题和答案做了一个事实陈述,并提出了改进建议。zx485以礼貌的方式回应了这一评论,并使我确信我的评论部分是不准确的。但这并没有减损一个事实,即您的问题留给读者很大的想象空间(您没有显示预期的输出),并且标题过于笼统(它适用于每一个XSLT问题)。我没有否决你的问题,我觉得我的问题有足够的细节——我试图为xml生成所需的xsl,标题中提到了这一点。此外,标题和正文应该结合在一起,形成一个统一体——引言和更多信息。我觉得我已经做到了。就我而言,我非常怀疑你在这个问题上的行动。随机投票否决他人是一项运动,对那些真正寻求帮助的人毫无益处。它似乎唯一受益的是那些在排行榜上名列前茅的人。@Harriet因为你写的东西(而且只因为你写的东西,而不是作为一个人本身)而受到批评是它不可分割的一部分。没有人喜欢被批评,但总的来说,礼貌的批评会带来更好的问题和答案。你应该认真对待这些评论,努力改进你的问题,而不是亲自攻击我(说我没有能力回答你的问题)。如果你真的认为我在这里所做的任何事情(当然是为了帮助)都是不合适的,请邀请一位版主。谢谢我邀请了一位主持人。
chatTranscript/newParty/userInfo/userData/item[@key="EmailAddress"]
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/chatTranscript/newParty[count(*) > 1]">
<xsl:variable name="curParty" select="@userId" />
Email - <xsl:value-of select="userData/item[@key='EmailAddress']"/>
Fist Name: <xsl:value-of select="userData/item[@key='FirstName']"/>
Identify Create Contact: <xsl:value-of select="userData/item[@key='IdentifyCreateContact']"/>
Last Name: <xsl:value-of select="userData/item[@key='LastName']"/>
Media Type: <xsl:value-of select="userData/item[@key='MediaType']"/>
Message: <xsl:value-of select="../message[@userId=$curParty]/msgText/text()"/>
Reason for leaving: <xsl:value-of select="normalize-space(../partyLeft[@userId=$curParty])" />
</xsl:template>
<xsl:template match="text()" />
</xsl:stylesheet>
Email - dskim@gmail.com
Fist Name: John
Identify Create Contact: 3
Last Name: Doe
Media Type: chat
Message: ehfdfdfd
Reason for leaving: removed by other party