2

我试图从我粘贴在下面的 Xml 文档中显示 JK Rowling 创作的所有项目的 ASIN。我不知道如何编写 XPath,因为 ASIN 在 ItemAttributes 之外。我知道它应该是这样的:/ItemSearchResponse/Items/Item/ItemAttributes[Author="JK Rowling"]/Author 但我不知道除了 ASIN 在哪里。有没有人有什么建议?

<Item>
  <ASIN>0747557462</ASIN>
  <ItemAttributes>
    <Author>Sarah Brown</Author>
    <Author>Gil McNeil</Author>
    <Creator Role="Foreword">J.K. Rowling</Creator>
    <Manufacturer>Bloomsbury UK</Manufacturer>
    <ProductGroup>Book</ProductGroup>
    <Title>Magic</Title>
  </ItemAttributes>
</Item>
<Item>
  <ASIN>0826452329</ASIN>t
  <ItemAttributes>
    <Author>Philip Nel</Author>
    <Manufacturer>Continuum</Manufacturer>
    <ProductGroup>Book</ProductGroup>
    <Title>J.K. Rowling's Harry Potter Novels: A Reader's Guide (Continuum Contemporaries) - Unauthorized</Title>
  </ItemAttributes>
</Item>
<Item>
  <ASIN>1571745424</ASIN>
  <ItemAttributes>
    <Author>George W. Beahm</Author>
    <Creator Role="Illustrator">Tim Kirk</Creator>
    <Manufacturer>Hampton Roads Pub Co</Manufacturer>
    <ProductGroup>Book</ProductGroup>
    <Title>Muggles and Magic: An Unofficial Guide to J.k. Rowling and the Harry Potter Phenomenon</Title>
  </ItemAttributes>
</Item>
<Item>
  <ASIN>0737716681</ASIN>
  <ItemAttributes>
    <Creator Role="Editor">Gary Wiener</Creator>
    <Manufacturer>Greenhaven Press</Manufacturer>
    <ProductGroup>Book</ProductGroup>
    <Title>JK Rowling (hardcover edition) (Literary Companion to Contemporary Authors)</Title>
  </ItemAttributes>
</Item>
<Item>
  <ASIN>1586638394</ASIN>
  <ItemAttributes>
    <Author>SparkNotes Editors</Author>
    <Manufacturer>SparkNotes</Manufacturer>
    <ProductGroup>Book</ProductGroup>
    <Title>J.K. Rowling (SparkNotes Library of Great Authors)</Title>
  </ItemAttributes>
</Item>
<Item>
  <ASIN>0972322108</ASIN>
  <ItemAttributes>
    <Author>John Granger</Author>
    <Manufacturer>Zossima Press</Manufacturer>
    <ProductGroup>Book</ProductGroup>
    <Title>The Hidden Key to Harry Potter: Understanding the Meaning, Genius, and Popularity of Joanne Rowling's Harry Potter Novels</Title>
  </ItemAttributes>
</Item>
<Item>
  <ASIN>1414321880</ASIN>
  <ItemAttributes>
    <Author>John Granger</Author>
    <Manufacturer>SaltRiver</Manufacturer>
    <ProductGroup>Book</ProductGroup>
    <Title>How Harry Cast His Spell: The Meaning Behind the Mania for J. K. Rowling's Bestselling Books</Title>
  </ItemAttributes>
</Item>
<Item>
  <ASIN>0545010225</ASIN>
  <ItemAttributes>
    <Author>J. K. Rowling</Author>
    <Creator Role="Illustrator">Mary GrandPré</Creator>
    <Manufacturer>Arthur A. Levine Books</Manufacturer>
    <ProductGroup>Book</ProductGroup>
    <Title>Harry Potter and the Deathly Hallows (Book 7)</Title>
  </ItemAttributes>
</Item>
<Item>
  <ASIN>B000RBZM6E</ASIN>
  <ItemAttributes>
    <Author>J.K. Rowling</Author>
    <Creator Role="Translator">Gili Bar-Hillel</Creator>
    <Manufacturer>Yediot Acharonot</Manufacturer>
    <ProductGroup>Book</ProductGroup>
    <Title>Harry Potter and the Goblet of Fire (Hebrew) (English and Hebrew Edition)</Title>
  </ItemAttributes>
</Item>
<Item>
  <ASIN>0439705908</ASIN>
  <ItemAttributes>
    <Author>J. K. Rowling</Author>
    <Manufacturer>Scholastic</Manufacturer>
    <ProductGroup>Book</ProductGroup>
    <Title>Harry Potter and the Order of the Phoenix (Year 5)</Title>
  </ItemAttributes>
</Item>

4

2 回答 2

1

这是一个只向前的XPath 表达式,它准确地选择了想要的节点:

/*/*[translate(ItemAttributes/Author, ' ', '')='J.K.Rowling']/ASIN

基于 XSLT 的验证

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
  <xsl:copy-of select=
  "/*/*[translate(ItemAttributes/Author, ' ', '')='J.K.Rowling']/ASIN"/>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于提供的(片段,包裹在单个顶部元素中以成为格式良好的)XML 文档时

<t>
    <Item>
        <ASIN>0747557462</ASIN>
        <ItemAttributes>
            <Author>Sarah Brown</Author>
            <Author>Gil McNeil</Author>
            <Creator Role="Foreword">J.K. Rowling</Creator>
            <Manufacturer>Bloomsbury UK</Manufacturer>
            <ProductGroup>Book</ProductGroup>
            <Title>Magic</Title>
        </ItemAttributes>
    </Item>
    <Item>
        <ASIN>0826452329</ASIN>t
        <ItemAttributes>
            <Author>Philip Nel</Author>
            <Manufacturer>Continuum</Manufacturer>
            <ProductGroup>Book</ProductGroup>
            <Title>J.K. Rowling's Harry Potter Novels: A Reader's Guide (Continuum Contemporaries) - Unauthorized</Title>
        </ItemAttributes>
    </Item>
    <Item>
        <ASIN>1571745424</ASIN>
        <ItemAttributes>
            <Author>George W. Beahm</Author>
            <Creator Role="Illustrator">Tim Kirk</Creator>
            <Manufacturer>Hampton Roads Pub Co</Manufacturer>
            <ProductGroup>Book</ProductGroup>
            <Title>Muggles and Magic: An Unofficial Guide to J.k. Rowling and the Harry Potter Phenomenon</Title>
        </ItemAttributes>
    </Item>
    <Item>
        <ASIN>0737716681</ASIN>
        <ItemAttributes>
            <Creator Role="Editor">Gary Wiener</Creator>
            <Manufacturer>Greenhaven Press</Manufacturer>
            <ProductGroup>Book</ProductGroup>
            <Title>JK Rowling (hardcover edition) (Literary Companion to Contemporary Authors)</Title>
        </ItemAttributes>
    </Item>
    <Item>
        <ASIN>1586638394</ASIN>
        <ItemAttributes>
            <Author>SparkNotes Editors</Author>
            <Manufacturer>SparkNotes</Manufacturer>
            <ProductGroup>Book</ProductGroup>
            <Title>J.K. Rowling (SparkNotes Library of Great Authors)</Title>
        </ItemAttributes>
    </Item>
    <Item>
        <ASIN>0972322108</ASIN>
        <ItemAttributes>
            <Author>John Granger</Author>
            <Manufacturer>Zossima Press</Manufacturer>
            <ProductGroup>Book</ProductGroup>
            <Title>The Hidden Key to Harry Potter: Understanding the Meaning, Genius, and Popularity of Joanne Rowling's Harry Potter Novels</Title>
        </ItemAttributes>
    </Item>
    <Item>
        <ASIN>1414321880</ASIN>
        <ItemAttributes>
            <Author>John Granger</Author>
            <Manufacturer>SaltRiver</Manufacturer>
            <ProductGroup>Book</ProductGroup>
            <Title>How Harry Cast His Spell: The Meaning Behind the Mania for J. K. Rowling's Bestselling Books</Title>
        </ItemAttributes>
    </Item>
    <Item>
        <ASIN>0545010225</ASIN>
        <ItemAttributes>
            <Author>J. K. Rowling</Author>
            <Creator Role="Illustrator">Mary GrandPré</Creator>
            <Manufacturer>Arthur A. Levine Books</Manufacturer>
            <ProductGroup>Book</ProductGroup>
            <Title>Harry Potter and the Deathly Hallows (Book 7)</Title>
        </ItemAttributes>
    </Item>
    <Item>
        <ASIN>B000RBZM6E</ASIN>
        <ItemAttributes>
            <Author>J.K. Rowling</Author>
            <Creator Role="Translator">Gili Bar-Hillel</Creator>
            <Manufacturer>Yediot Acharonot</Manufacturer>
            <ProductGroup>Book</ProductGroup>
            <Title>Harry Potter and the Goblet of Fire (Hebrew) (English and Hebrew Edition)</Title>
        </ItemAttributes>
    </Item>
    <Item>
        <ASIN>0439705908</ASIN>
        <ItemAttributes>
            <Author>J. K. Rowling</Author>
            <Manufacturer>Scholastic</Manufacturer>
            <ProductGroup>Book</ProductGroup>
            <Title>Harry Potter and the Order of the Phoenix (Year 5)</Title>
        </ItemAttributes>
    </Item>
</t>

计算 XPath 表达式并将选定节点复制到输出:

<ASIN>0545010225</ASIN>
<ASIN>B000RBZM6E</ASIN>
<ASIN>0439705908</ASIN>

请注意:Author我们在比较之前通过消除任何空格来忽略任何元素的字符串值中不同数量的空格。

于 2013-03-21T03:28:34.443 回答
0

您可以使用..访问父项目,然后进入 ASIN 标签,添加/../ASIN到您的当前路径。

尝试这个:

/ItemSearchResponse/Items/Item/ItemAttributes[Author="J. K. Rowling"]/../ASIN
于 2013-03-21T02:42:28.617 回答