antchfx/xpath

Setting predicate based on subquery(path) don't give result

Closed this issue ยท 0 comments

Hi,

Been using the library for my exams, and I love it very much. ๐Ÿ‘

However, I've encountered an issue where I've set a predicate based on an e.g. id, and it don't result in a result. But it works just fine using xmllint --xpath.

Query

/StudentSubmissions/Department/Students/Student[@studentNo = /StudentSubmissions/Department/Courses/Course/Assignments[@studyYear = '2017']/Assignment[@no = '1' and not(@no = '6')]/Submission/@student]

xmllint result

<Student studentNo="1">
        <FamilyName>Student</FamilyName>
        <GivenName>Another</GivenName>
</Student>

Code

package main

import (
	"os"

	"github.com/antchfx/xmlquery"
)

func main() {
	f, err := os.Open("###FILE###")
	if err != nil {
		panic(err)
	}

	doc, err := xmlquery.Parse(f)
	if err != nil {
		panic(err)
	}

	for _, n := range xmlquery.Find(doc, "/StudentSubmissions/Department/Students/Student[@studentNo = /StudentSubmissions/Department/Courses/Course/Assignments[@studyYear = '2017']/Assignment[@no = '1' and not(@no = '6')]/Submission/@student]") {
		fmt.Printf("%s\n", n.OutputXML(true))
	}
}

XML

<?xml version="1.0"?>
<!DOCTYPE StudentSubmissions SYSTEM "StudentSubmissions.dtd">
<StudentSubmissions>
  <Department shortName="IDI">
    <Name>Computer Science</Name>
    <Students cycle="B">
      <Student studentNo="1">
        <FamilyName>Student</FamilyName>
        <GivenName>Another</GivenName>
      </Student>
    </Students>
    <Courses cycle="B">
      <Course>
        <Code>IMT2571</Code>
        <Title>Data Modelling and Database Systems</Title>
        <Assignments studyYear="2017" min="5" max="6">
          <Assignment no="1">
            <Title>Database Application</Title>
            <Description>Develop and test database application.</Description>
            <Deadline>2017-09-10</Deadline>
            <Submission student="1" date="2017-09-09">
              <Outcome>1</Outcome>
              <Comments>Well done!</Comments>
            </Submission>
          </Assignment>
          <Assignment no="2">
            <Title>SQL</Title>
            <Description>Insert, query &amp; modify database data.</Description>
            <Deadline>2017-09-24</Deadline>
            <Submission student="1" date="2017-10-02"/>
          </Assignment>
          <Assignment no="3">
            <Title>Conceptual Modelling</Title>
            <Description>Designing a conceptual (UML) model.</Description>
            <Deadline>2017-10-08</Deadline>
          </Assignment>
        </Assignments>
      </Course>
      <Course>
        <Code>IMT2261</Code>
        <Title>Information Structures and Database Systems</Title>
        <Assignments studyYear="2017" min="6" max="7"> </Assignments>
      </Course>
    </Courses>
    <Courses cycle="M">
      <Course>
        <Code>IMT4886 Applied Computer Science Project</Code>
        <Title/>
      </Course>
    </Courses>
  </Department>
</StudentSubmissions>