当前位置: 首页 > 知识库问答 >
问题:

执行XSLT转换时的XPath问题

贲言
2023-03-14

我被这个问题困了2天。我只想提取图像中标记的数据,以便通过XSLT进行转换。我在这个问题中也给出了XML文件。抱歉,如果这是一个非常愚蠢的问题。类似的路径,如//partyinformation/buyer/contact//name在文档中工作。但是//partyinformation/买主/联系人//姓名不起作用

到目前为止我已经试过了,

  • //partyinformation/buyer/contact/name1
  • //partyinformation/买家/联系人//姓名
  • /Invoice[@xmlns:xsd=“http://www.w3.org/2001/xmlschema”]/partyinformation[@xmlns=“”]/buyer/contact[@xmlns=“http://companydomain.schema”]/name[@xmlns=“”]/text()

<?xml version="1.0" encoding="utf-16"?>
<Invoice xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://Companydomain.Schema">
    <InvoiceHeader xmlns="">
        <InvoiceDate />
        <InvoiceDueDate />
        <InvoiceNo />
        <AllowDuplicates>false</AllowDuplicates>
        <AddAttachment>false</AddAttachment>
        <UserApprovedSubmission>false</UserApprovedSubmission>
        <SellerOrderNumber />
        <PurchaseOrderNumber />
        <NumberOfLines>1</NumberOfLines>
        <InvoiceType>
            <Type>ServiceInvoice</Type>
        </InvoiceType>
        <SourceInvoiceType>
            <Type>ServiceInvoice</Type>
        </SourceInvoiceType>
        <DeliveryInformation>
            <DeliveryInstructions />
        </DeliveryInformation>
    </InvoiceHeader>
    <PartyInformation xmlns="">
        <Seller>
            <Party xmlns="http://Companydomain.Schema">
                <PartyId xmlns="" />
                <ExternalSystemId xmlns="" />
                <Name xmlns="" />
                <GBN xmlns="" />
            </Party>
            <Address xmlns="http://Companydomain.Schema" />
        </Seller>
        <Buyer>
            <Party xmlns="http://Companydomain.Schema">
                <PartyId xmlns="">2</PartyId>
                <ExternalSystemId xmlns="" />
                <Name xmlns="" />
                <GBN xmlns="" />
            </Party>
            <Address xmlns="http://Companydomain.Schema" />
            <Contact xmlns="http://Companydomain.Schema">
                <Name xmlns="">Mr Parminder Singh</Name>
                <Phone xmlns="" />
                <Fax xmlns="" />
                <Email xmlns="" />
            </Contact>
            <SuppliersCustomerId />
        </Buyer>
        <ShipTo>
            <Party xmlns="http://Companydomain.Schema">
                <Name xmlns="" />
            </Party>
            <Address xmlns="http://Companydomain.Schema" />
        </ShipTo>
        <ShipFrom>
            <Party xmlns="http://Companydomain.Schema">
                <Name xmlns="" />
            </Party>
            <Address xmlns="http://Companydomain.Schema" />
        </ShipFrom>
        <Payer>
            <Party xmlns="http://Companydomain.Schema">
                <Name xmlns="" />
            </Party>
            <Address xmlns="http://Companydomain.Schema" />
        </Payer>
    </PartyInformation>
</Invoice>

共有1个答案

侯向文
2023-03-14

这是因为Contact节点位于http://companydomain.schema命名空间下。尝试:

//PartyInformation/Buyer/*[local-name()='Contact']/Name

或者,您可以在xslt中注册命名空间,

xmlns:com="http://Companydomain.Schema"

并拥有xpath

//PartyInformation/Buyer/com:Contact/Name
 类似资料:
  • 错误消息 线程“main”org.openqa.selenium.nosuchelementException:没有这样的元素:找不到元素:{“method”:“XPath”,“Selector”:“.//*[@id='TreeBox1']/div/table/tbody/tr[2]/td[2]/table/tbody/tr[2]/td[2]/table/tbody/tr[2]/td[2]/tab

  • Docx4j版本2.8.1.3 docx非常简单,只有一些文本,但似乎对任何docx都不适用。 在docx4j论坛上查看源/异常可能更容易。http://www.docx4java.org/forums/pdf-output-f27/docx4j-to-pdf-fop-issues-cannot-perform-the-transformation-t1652.html 如果在一个地方回答,我会用

  • 我想将xml文件格式转换为另一种格式;使用XSL1.0或2.0版。 http://www.w3.org/1999/xsl/transform“version=”1.0“> 这段代码是从“struct”节点的“members”属性中提取相关ID的起点,以后只用于发出“field”节点。 xslt处理器需要解析Struct节点的'members'属性。“members”属性是字段ID的列表。 在上面的

  • 我有这个xml是架构版本3.0http://www.test.com/Service/v3。我需要将其降级到版本1http://www.test.com/Service/v1.为此,我使用XSL来转换它。 但我得到这样的结果 在我的输出XML中,我得到了这个 为什么将其添加到NS2:消息中? 它不在输入xml中。 我遗漏了一些东西。如果有人能指出这个问题,我将不胜感激。 我希望在输出中创建以下内容

  • XML输入文件: XML输入文件转换为XML输出文件。将XML输入文件的firstName、middleName和lastName标签合并为XML Ouput文件的name标签,将XML输入文件的address1、address2、city、state和pincode标签合并为XML Ouput文件的address标签。 我几乎转换了代码,但我在这里与empId作斗争。我已经在XSLT文件中手动输

  • 我正在为班级做一个XSLT作业。说明告诉我“通过在alldepartments.xsl样式表中应用getEmployees模板来生成结果文档horizons.xml。” 于是,我打开终端进入:java net。旧金山。撒克逊人。转变it:让所有部门都有员工。xsl-o:horizons。xml 我收到了错误消息:“错误:无法找到或加载主类net.sf.saxon.Transform,原因是:jav