我需要从XML文件(这里包括的) 链接到xml文件。查询
我需要找到所有的课程,这些课程都是由一位名叫“Eric”的牧师开设的课程的先决条件。
预期查询结果:
我试着分步骤工作
我知道我需要找到所有有CS106A和CS106B先决条件的课程
所以我试着
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<Course_Catalog>
<xsl:copy-of select="//Course[Prerequisites/Prereq = 'CS106B' and 'CS106A']/Title"/>
</Course_Catalog>
</xsl:template>
</xsl:stylesheet>但这就是我
如果我试着
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<Course_Catalog>
<xsl:copy-of select="//Course[Prerequisites/Prereq = 'CS106A' and 'CS106B']/Title"/>
</Course_Catalog>
</xsl:template>
</xsl:stylesheet>我只得到
这样我就可以假设我的“和”不起作用了?
发布于 2015-01-08 15:24:19
编辑,重新找到以教授名字为前提的课程
您可以使用xsl:key创建索引查找,并将其用作模板中的谓词:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:key name="ProfLookup"
match="//Course"
use="@Number"/>
<xsl:template match="/">
<CoursesWithPrerequsiteOfEric>
<xsl:apply-templates select="//Course[key('ProfLookup',
Prerequisites/Prereq)/Instructors/Professor/First_Name='Eric']"/>
</CoursesWithPrerequsiteOfEric>
</xsl:template>
<xsl:template match="Course">
<Course>
<xsl:value-of select="Title"/>
</Course>
</xsl:template>
</xsl:stylesheet>它喷出:
<CoursesWithPrerequsiteOfEric>
<Course>Programming Abstractions</Course>
<Course>Computer Organization and Systems</Course>
<Course>Introduction to Probability for Computer Scientists</Course>
<Course>Digital Systems II</Course>
</CoursesWithPrerequsiteOfEric>编辑
抱歉,没有先摸一下原来的要求。当然,您的中间步骤是找到所有以'CS106A‘或 'CS106B’作为先决条件的课程。但是很明显,上面的密钥查找解决了实际的需求。
<xsl:template match="/">
<CoursesWithPrerequsiteOfEric>
<xsl:apply-templates select="//Course[Prerequisites/Prereq = 'CS106A' or
Prerequisites/Prereq = 'CS106B']"/>
</CoursesWithPrerequsiteOfEric>
</xsl:template>Re :更多需求
好吧,你可以插上钥匙,但它变得更难理解,海事组织:
select="//Course[Prerequisites/Prereq = //Course[Instructors/Professor/First_Name='Eric']/@Number]"而且还在数数--你需要刷一下你的xsl函数。
<xsl:value-of select="count(//Course[Prerequisites/Prereq = //Course[Instructors/Professor/First_Name='Eric']/@Number])"/>https://stackoverflow.com/questions/27843367
复制相似问题