xml 相关问题

可扩展标记语言(XML)是一种灵活的结构化文档格式,用于定义人类和机器可读的编码规则。

如何排除将订单导出为 XML 文件的空标签?

我在插件 WP ALL EXPORT PRO 中使用 PHP 代码来过滤来自 WooCommerce 的特定订单,其中包含具有相关详细信息和选项的相关产品,然后通过 XML / ... 导出它们

回答 1 投票 0

根元素之前的文档中的标记在 .dtd 文件中必须格式正确

我有下一个文件: 我有下一个文件: <!ELEMENT notes (note+)> <!ELEMENT note (to, from, heading, body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> 和 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE notes SYSTEM "validation.dtd"> <notes> <note> <to>Alice</to> <from>Bob</from> <heading>Reminder</heading> <body>Don't forget our meeting!</body> </note> <note> <to>John</to> <from>Jane</from> <heading>Invalid Tag</heading> <body>This should be </body> </note> <note> <to>Tom</to> <from>Sara</from> <heading>Empty Tag</heading> <body>hello</body> </note> </notes> 和我的 Java 验证器 import org.xml.sax.Attributes; import org.xml.sax.SAXParseException; import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import java.io.File; public class SAXParserTest { public static void main(String[] args) { parseWithDTDValidation("C:\\Users\\ilapa\\Desktop\\university\\4_course_1_sem\\Проектування Веб сервісів\\lab_5\\lab5\\src\\main\\resources\\validation.dtd"); // parseWithXSDValidation("C:\\Users\\ilapa\\Desktop\\university\\4_course_1_sem\\Проектування Веб сервісів\\lab_5\\lab5\\src\\main\\resources\\index.xml", // "C:\\Users\\ilapa\\Desktop\\university\\4_course_1_sem\\Проектування Веб сервісів\\lab_5\\lab5\\src\\main\\resources\\XSDvalidation.xsd"); } private static void parseWithDTDValidation(String filePath) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(true); // Увімкнути валідацію по DTD SAXParser parser = factory.newSAXParser(); parser.parse(new File(filePath), new CustomHandler()); } catch (Exception e) { e.printStackTrace(); } } private static void parseWithXSDValidation(String filePath, String schemaPath) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); Schema schema = schemaFactory.newSchema(new File(schemaPath)); factory.setSchema(schema); SAXParser parser = factory.newSAXParser(); parser.parse(new File(filePath), new CustomHandler()); } catch (Exception e) { e.printStackTrace(); } } } class CustomHandler extends DefaultHandler { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) { System.out.println("Start Element: " + qName); } @Override public void endElement(String uri, String localName, String qName) { System.out.println("End Element: " + qName); } @Override public void characters(char[] ch, int start, int length) { System.out.println("Characters: " + new String(ch, start, length).trim()); } @Override public void error(SAXParseException e) { System.out.println("Error: " + e.getMessage()); } @Override public void fatalError(SAXParseException e) { System.out.println("Fatal Error: " + e.getMessage()); } @Override public void warning(SAXParseException e) { System.out.println("Warning: " + e.getMessage()); } } 编译器给我下一个错误:`org.xml.sax.SAXParseException;系统ID:文件:src/main/resources/validation.dtd;行号:1;列数:3;文档中根元素之前的标记必须格式正确。 我检查 .dtd 验证和 xml 文件中的每个符号吗?但找不到任何语法错误 如果有人回答我的问题我会很高兴 看起来您正在尝试解析此代码行中的 validation.dtd 文件: parseWithDTDValidation("C:\\Users\\ilapa\\Desktop\\university\\4_course_1_sem\\Проектування Веб сервісів\\lab_5\\lab5\\src\\main\\resources\\validation.dtd"); 您可能应该将路径传递给 xml 文件本身。

回答 1 投票 0

提取 XML,子级位于单独的标签中

我有一个这样的场景, 我有部门和员工表,如图所示, 我必须连接这两个表并生成包含所有部门 ID 的 XML 文件,并且在每个部门 ID 下,它应该列出其所有员工...

回答 1 投票 0

如何在 odoo 隐藏菜单项

我试图在 odoo 17 中的 crm 模块中为所有用户隐藏一个菜单项,其 ID 为 res_partner_menu_customer,它位于 crm/views/crm_menu_viewls.xml 这是原始的xml代码 我试图在odoo 17中的crm模块中为所有用户隐藏一个菜单项,id为res_partner_menu_customer,它位于crm/views/crm_menu_viewls.xml 这是原始的xml代码 <menuitem id="res_partner_menu_customer" name="Customers" parent="crm_menu_sales" action="base.action_partner_form" sequence="5"/> 我尝试过这个 <odoo> <data> <menuitem id="viva_res_partner_menu_customer" parent="crm.res_partner_menu_customer" name="" /> </data> 但是没有用,我使用了 active False 但没有结果 您可以使用groups="base.group_system": <menuitem groups="base.group_system" id="res_partner_menu_customer" name="Customers" parent="crm_menu_sales" action="base.action_partner_form" sequence="5"/>

回答 1 投票 0

W3 验证器的 Feed RSS 未更新

实际上我的 feed rss 有问题。 我做了很多测试,我必须修改我的 feed rss 视图(自定义它)。 这是我的提要 rss:http://agro-media.fr/?feed=email 当你在...

回答 2 投票 0

使用 XSLT 将 JSON 转换为 XML(基本问题/13007280)

我管理包含书名、作者和语言的书籍列表。有时一个盒子(“coffret”)包含许多书。 我尝试了 questions/13007280 中的 XSLT 代码:它工作得很好,但仅适用于...

回答 1 投票 0

为什么我的 XSLT `xsl:attribute` 在放置在 `xsl:element` 中的 `xsl:text` 之后时消失了?

我正在进行 XSLT 转换以创建具有 onclick 属性的 HTML 元素。当我在按钮的文本内容之前定义 onclick 属性时,一切都按如下方式工作 我正在进行 XSLT 转换,以创建具有 <button> 属性的 HTML onclick 元素。当我定义 onclick 属性 before 按钮的文本内容时,一切都会按预期工作。这是有效的代码: <xsl:element name="button"> <xsl:attribute name="onclick"> console.log(600); </xsl:attribute> <xsl:text>Click Me</xsl:text> </xsl:element> 输出: <button onclick="console.log(600);">Click Me</button> 但是,如果我将 xsl:attribute 放在 xsl:text 内容之后,如下所示: <xsl:element name="button"> <xsl:text>Click Me</xsl:text> <xsl:attribute name="onclick"> console.log(600); </xsl:attribute> </xsl:element> 该属性被忽略,输出仅包含文本: <button>Click Me</button> 为什么将xsl:attribute放在xsl:text之后会导致属性消失? XSLT 中是否有一条规则要求在内容之前定义属性?如果是,其背后的原因是什么?为什么它会这样? 规则位于 https://www.w3.org/TR/xslt-10/#creating-attributes: 以下均为错误: 在添加子元素后向元素添加属性 它;实现可能会发出错误信号或忽略 属性。 所以,是的,您需要在任何子节点(如文本节点)之前输出属性,否则您可能会收到错误或 XSLT 处理器会忽略该属性。

回答 1 投票 0

kryo 序列化后 java.xml 内出现 nullpointerException

我正在将包括一些 XML 节点 (org.w3c.dom.Node) 的数据写入 Spark rdd,这会导致数据使用 kryo 进行序列化和反序列化。对于大多数可以正常工作的节点,我是

回答 1 投票 0

XPath 根据以下节点选择节点,但前提是该节点包含某个元素

给定这个 XML 文档存根(我无法修改其生成)... 给定这个 XML 文档存根,(我无法修改其生成)... <Datastream parserApplicationName="mscorlib" parserApplicationVersion="4.0.0.0" parserAssemblyName="Prophet21.Datastream" parserAssemblyVersion="23.1.1.0"> <JOBXXXXDEF type="1" typeName="JobHeader" key="{a52722bf-c784-4d0a-b80c-d60a55179cb5}" InputFileName=""> <COPIES>1</COPIES> <HDRXXXXDEF > <TITLE>QUOTATION</TITLE> <ORDER_ACK_NUMBER>1000998</ORDER_ACK_NUMBER> </HDRXXXXDEF> <LINEXXXDEF lineno ="1" > <ORDERED_QTY>1.00</ORDERED_QTY> <ORDER_UOM>EA</ORDER_UOM> </LINEXXXDEF> <LINEXXXDEF lineno ="2"> <EXDSCXXDEF > <EXTENDED_DESCRIPTION>Delivery: 17-20 Weeks</EXTENDED_DESCRIPTION> </EXDSCXXDEF> </LINEXXXDEF> <LINEXXXDEF lineno ="3"> <ASCMPXXDEF > <QTY_PER_ASSEMBLY>1.00</QTY_PER_ASSEMBLY> </ASCMPXXDEF> </LINEXXXDEF> <LINEXXXDEF lineno ="4"> <EXDSCXXDEF > <EXTENDED_DESCRIPTION>Stainless Steel Design</EXTENDED_DESCRIPTION> </EXDSCXXDEF> </LINEXXXDEF> <LINEXXXDEF lineno ="5"> <ASCMPXXDEF > <QTY_PER_ASSEMBLY>1.00</QTY_PER_ASSEMBLY> </ASCMPXXDEF> </LINEXXXDEF> <LINEXXXDEF lineno ="6"> <ORDERED_QTY>1.00</ORDERED_QTY> <ORDER_UOM>EA</ORDER_UOM> </LINEXXXDEF> <LINEXXXDEF lineno ="7"> <EXDSCXXDEF > <EXTENDED_DESCRIPTION>Added to the above if required.</EXTENDED_DESCRIPTION> </EXDSCXXDEF> </LINEXXXDEF> <TOTALSXDEF > <SUBTOTXDEF > <TOTAL_LINES>2</TOTAL_LINES> <SUB_TOTAL>1,880.00</SUB_TOTAL> <TAXES>0.00</TAXES> <TOTAL_ECO_FEE>0.00</TOTAL_ECO_FEE> <RETAIL_DELIVERY_FEE>0.00</RETAIL_DELIVERY_FEE> <JURISDICTION_DESC /> </SUBTOTXDEF> <GRDTOTXDEF "> <GRAND_TOTAL>1,880.00</GRAND_TOTAL> <CURRENCY_DESC>U.S. Dollars</CURRENCY_DESC> </GRDTOTXDEF> </TOTALSXDEF> </FORMXXXDEF> </JOBXXXXDEF> </Datastream> 我需要一个或多个 XPath 查询来选择 LINEXXDEF 有一个名为 ASCMPXXDEF 的子节点的整个节点,然后如果该父节点之后的 NEXT LINEXXDEF 有一个名为 EXDSCXXDEF 的子节点,我需要该节点。 所以在上面,我需要这些节点,用于上面的第 3、4 和 5 行 <LINEXXXDEF lineno ="3"> <ASCMPXXDEF > <QTY_PER_ASSEMBLY>1.00</QTY_PER_ASSEMBLY> </ASCMPXXDEF> </LINEXXXDEF> <LINEXXXDEF lineno ="4"> <EXDSCXXDEF > <EXTENDED_DESCRIPTION>Stainless Steel Design</EXTENDED_DESCRIPTION> </EXDSCXXDEF> </LINEXXXDEF> <LINEXXXDEF lineno ="5"> <ASCMPXXDEF > <QTY_PER_ASSEMBLY>1.00</QTY_PER_ASSEMBLY> </ASCMPXXDEF> </LINEXXXDEF> 我需要第 3 行,因为它有 ASCMPXXDEF 作为子项,我需要第 4 行,因为它有一个名为 EXDSCXXDEF 的子项,我需要第 5 行,因为它又有一个 ASCMPXXDEF 子项。 我最接近的是这个 XPATH //ASCMPXXDEF/parent::*/following-sibling::LINEXXXDEF[EXDSCXXDEF][1] | //ASCMPXXDEF/parent::* 但这正在回归 <LINEXXXDEF lineno ="3"> <ASCMPXXDEF > <QTY_PER_ASSEMBLY>1.00</QTY_PER_ASSEMBLY> </ASCMPXXDEF> </LINEXXXDEF> <LINEXXXDEF lineno ="4"> <EXDSCXXDEF > <EXTENDED_DESCRIPTION>Stainless Steel Design</EXTENDED_DESCRIPTION> </EXDSCXXDEF> </LINEXXXDEF> <LINEXXXDEF lineno ="5"> <ASCMPXXDEF > <QTY_PER_ASSEMBLY>1.00</QTY_PER_ASSEMBLY> </ASCMPXXDEF> </LINEXXXDEF> <LINEXXXDEF lineno ="7"> <EXDSCXXDEF > <EXTENDED_DESCRIPTION>Added to the above if required.</EXTENDED_DESCRIPTION> </EXDSCXXDEF> </LINEXXXDEF> 但它包括第 7 行,这是我不想要的,因为第 7 行不直接跟随包含 ASCMPXXDEF 的 LINEXXXDEF 节点。 有没有办法让 XPATH 仅评估下一个同级? 本质上我得到了第 7 行,因为第 5 行是一个 ASCMPXXDEF 节点,但如果它直接位于第 6 行之后,我只需要它。第 6 行是我的评估过程的重新启动...但 XPATH 会跳过它,但因为第 7 行在第 5 行之后,所以它被包含在内。 我也在使用 C# 工作,如果有更简单的操作方法... 我正在尝试找出如何删除包含 EXDSCXXDEF 但紧随包含 ASCMPXXDEF 的节点之后的任何节点 <LINEXXXDEF lineno ="3"> <ASCMPXXDEF > <QTY_PER_ASSEMBLY>1.00</QTY_PER_ASSEMBLY> </ASCMPXXDEF> </LINEXXXDEF> <LINEXXXDEF lineno ="4"> <EXDSCXXDEF > <EXTENDED_DESCRIPTION>Stainless Steel Design</EXTENDED_DESCRIPTION> </EXDSCXXDEF> </LINEXXXDEF> <LINEXXXDEF lineno ="5"> <ASCMPXXDEF > <QTY_PER_ASSEMBLY>1.00</QTY_PER_ASSEMBLY> </ASCMPXXDEF> </LINEXXXDEF> *this node below should not be included <LINEXXXDEF lineno ="7"> <EXDSCXXDEF > <EXTENDED_DESCRIPTION>Added to the above if required.</EXTENDED_DESCRIPTION> </EXDSCXXDEF> </LINEXXXDEF>* 下面的XPath将会得到你想要的。 /Datastream/JOBXXXXDEF/LINEXXXDEF[ ASCMPXXDEF or (EXDSCXXDEF and preceding-sibling::LINEXXXDEF[1][ASCMPXXDEF ]) ] 点网小提琴

回答 1 投票 0

XSLTProcessor::transformToUri():内存分配失败:达到任意 MAX_URI_LENGTH 限制

我有一些 XML 文件需要在 Html 中“转换”并显示在屏幕上。 我使用 DOMDocument 和 XSLTProcessor 开发了一个几乎在任何时候都可以工作的简单脚本。 亲...

回答 2 投票 0

Java - Jackson - 如何将随机 XML 反序列化为 Map 的字符串值<String,String>,然后按原样序列化它

旧的描述不是我想要的,这是我想要的更新版本。 包 jackson.serialzation; 导入 com.fasterxml.jackson.annotation.JsonAnySetter; 导入 com.fasterxml。

回答 1 投票 0

如果标签之间不存在空格,C# XmlReader 将忽略标签

我有一个 XML 文件,所有 XML 都在一行,如下所示: CSX 亚特兰大赛区阿布维尔分队 阿布维尔分区从塔克开始......

回答 1 投票 0

Java - Jackson - 如何不逃脱 < to < character automatically when deserializing?

我有一个简单的 XML,其中包含包装器对象的 < character as <, then I wanted to deserialize these key-value elements as a map of 的转义字符串,方法是使用

回答 1 投票 0

使用 BeautifulSoup 解析带有子节点的 SEC EDGAR XML 表单数据

我正在尝试使用漂亮的 soup 和 xml 从 SEC 的 N-PORT-P/A 表格中抓取个人基金持有量。典型的提交如下所示,[链接在此][1],如下所示: 我正在尝试使用 beautiful soup 和 xml 从 SEC 的 N-PORT-P/A 表格中抓取个人基金持有量。典型的提交如下所示,[链接在此][1],如下所示: <edgarSubmission xmlns="http://www.sec.gov/edgar/nport" xmlns:com="http://www.sec.gov/edgar/common" xmlns:ncom="http://www.sec.gov/edgar/nportcommon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <headerData> <submissionType>NPORT-P/A</submissionType> <isConfidential>false</isConfidential> <accessionNumber>0001145549-23-004025</accessionNumber> <filerInfo> <filer> <issuerCredentials> <cik>0001618627</cik> <ccc>XXXXXXXX</ccc> </issuerCredentials> </filer> <seriesClassInfo> <seriesId>S000048029</seriesId> <classId>C000151492</classId> </seriesClassInfo> </filerInfo> </headerData> <formData> <genInfo> ... </genInfo> <fundInfo> ... </fundInfo> <invstOrSecs> <invstOrSec> <name>ARROW BIDCO LLC</name> <lei>549300YHZN08M0H3O128</lei> <title>Arrow Bidco LLC</title> <cusip>042728AA3</cusip> <identifiers> <isin value="US042728AA35"/> </identifiers> <balance>115000.000000000000</balance> <units>PA</units> <curCd>USD</curCd> <valUSD>114754.170000000000</valUSD> <pctVal>0.3967552449</pctVal> <payoffProfile>Long</payoffProfile> <assetCat>DBT</assetCat> <issuerCat>CORP</issuerCat> <invCountry>US</invCountry> <isRestrictedSec>N</isRestrictedSec> <fairValLevel>2</fairValLevel> <debtSec> <maturityDt>2024-03-15</maturityDt> <couponKind>Fixed</couponKind> <annualizedRt>9.500000000000</annualizedRt> <isDefault>N</isDefault> <areIntrstPmntsInArrs>N</areIntrstPmntsInArrs> <isPaidKind>N</isPaidKind> </debtSec> <securityLending> <isCashCollateral>N</isCashCollateral> <isNonCashCollateral>N</isNonCashCollateral> <isLoanByFund>N</isLoanByFund> </securityLending> </invstOrSec> Arrow Bidco LLC 是投资组合中的债券,其一些特征包含在文件中(CUSIP、CIK、余额、到期日等)。我正在寻找迭代每个单独的证券 (investOrSec) 并收集数据框中每个证券的特征的最佳方法。 我当前使用的代码是: import numpy as np import pandas as pd import requests from bs4 import BeautifulSoup header = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36", "X-Requested-With": "XMLHttpRequest"} n_port_file = requests.get("https://www.sec.gov/Archives/edgar/data/1618627/000114554923004968/primary_doc.xml", headers=header, verify=False) n_port_file_xml = n_port_file.content soup = BeautifulSoup(n_port_file_xml,'xml') names = soup.find_all('name') lei = soup.find_all('lei') title = soup.find_all('title') cusip = soup.find_all('cusip') .... maturityDt = soup.find_all('maturityDt') couponKind = soup.find_all('couponKind') annualizedRt = soup.find_all('annualizedRt') 然后迭代每个列表,根据每行中的值创建一个数据框。 fixed_income_data = [] for i in range(0,len(names)): rows = [names[i].get_text(),lei[i].get_text(), title[i].get_text(),cusip[i].get_text(), balance[i].get_text(),units[i].get_text(), pctVal[i].get_text(),payoffProfile[i].get_text(), assetCat[i].get_text(),issuerCat[i].get_text(), invCountry[i].get_text(),couponKind[i].get_text() ] fixed_income_data.append(rows) fixed_income_df = pd.DataFrame(equity_data,columns = ['name', 'lei', 'title', 'cusip', 'balance', 'units', 'pctVal', 'payoffProfile', 'assetCat', 'issuerCat', 'invCountry' 'maturityDt', 'couponKind', 'annualizedRt' ], dtype = float) 当包含所有信息时,这种方法效果很好,但通常有一个变量未被考虑在内。表单的一部分可能是空白的,或者发行人类别可能未正确填写,从而导致 IndexError。该投资组合包含我能够解析的 127 种证券,但可能缺少单一证券的年化回报率,从而失去了整齐创建数据框的能力。 此外,对于同时持有固定收益和股票证券的投资组合,股票证券不会返回 DebtSecs 子项的信息。有没有一种方法可以迭代这些数据,同时以最简单的方式清理它?即使为权益证券未引用的 DebtSec 子项添加“NaN”也是有效的响应。任何帮助将不胜感激! [1]:https://www.sec.gov/Archives/edgar/data/1618627/000114554923004968/primary_doc.xml 在我看来,这是处理问题的最佳方法。一般来说,EDGAR 文件非常难以解析,因此以下内容可能适用于其他文件,也可能不适用于其他文件,即使来自同一文件管理器也是如此。 为了让自己更轻松,因为这是一个 XML 文件,所以您应该使用 xml 解析器和 xpath。鉴于您要创建一个数据框,最合适的工具是 pandas read_xml() 方法。 因为 XML 是嵌套的,所以您需要创建两个不同的数据帧并将它们连接起来(也许其他人对如何处理它有更好的想法)。最后,虽然 read_xml() 可以直接从 url 读取,但在这种情况下,EDGAR 需要使用用户代理,这意味着您还需要使用 requests 库。 所以,大家一起: #import required libraries import pandas as pd import requests url = 'https://www.sec.gov/Archives/edgar/data/1618627/000114554923004968/primary_doc.xml' #set headers with a user-agent headers = {"User-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"} req = requests.get(url, headers=headers) #define the columns you want to drop (based on the data in your question) to_drop = ['identifiers', 'curCd','valUSD','isRestrictedSec','fairValLevel','debtSec','securityLending'] #the filing uses namespaces (too complicated to get into here), so you need to define that as well namespaces = {"nport": "http://www.sec.gov/edgar/nport"} #create the first df, for the securities which are debt instruments invest = pd.read_xml(req.text,xpath="//nport:invstOrSec[.//nport:debtSec]",namespaces=namespaces).drop(to_drop, axis=1) #crete the 2nd df, for the debt details: debt = pd.read_xml(req.text,xpath="//nport:debtSec",namespaces=namespaces).iloc[:,0:3] #finally, concatenate the two into one df: pd.concat([invest, debt], axis=1) 这应该输出您的 126 种债务证券(请原谅格式): lei title cusip balance units pctVal payoffProfile assetCat issuerCat invCountry maturityDt couponKind annualizedRt 0 ARROW BIDCO LLC 549300YHZN08M0H3O128 Arrow Bidco LLC 042728AA3 115000.00 PA 0.396755 Long DBT CORP US 2024-03-15 Fixed 9.50000 1 CD&R SMOKEY BUYER INC NaN CD&R Smokey Buyer Inc 12510CAA9 165000.00 PA 0.505585 Long DBT CORP US 2025-07-15 Fixed 6.75000 然后您可以使用最终的 df、添加或删除列等 您可以使用 MIT 许可的 datamule 包来完成此操作,该包可以处理下载和解析。免责声明:我是开发商。 from datamule import Filing, Downloader from pathlib import Path import os downloader = Downloader() downloader.download(form='NPORT-P',output_dir='NPORT',date=('2001-01-01','2024-11-01')) os.makedirs('NPORT_json', exist_ok=True) for file in Path('NPORT').iterdir(): filing = Filing(str(file), 'NPORT-P') filing.parse_filing() filing.write_json(f'NPORT_json/{file.name}.json') 您还可以直接访问馆藏数据,因为 Filing() 是一个可迭代对象。 pd.DataFrame(filing)

回答 2 投票 0

与 xslt:apply-templates 的混淆

我不明白应用模板在 XSLT 中是如何工作的。 现在我有这个 XML 文档: 我不明白应用模板在 XSLT 中是如何工作的。 现在我有了这个 XML 文档: <?xml version="1.0" encoding="UTF-8"?> <people> <person> <name>John Doe</name> <age>30</age> <occupation>Software Engineer</occupation> </person> <person> <name>Jane Smith</name> <age>28</age> <occupation>Graphic Designer</occupation> </person> <person> <name>Sam Brown</name> <age>35</age> <occupation>Data Analyst</occupation> </person> </people> 还有这个 XSLT: <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <!-- Output --> <xsl:output method="html" /> <!-- Default template --> <xsl:template match="/"> <html> <body> <xsl:apply-templates /> </body> </html> </xsl:template> <!-- Adding ages --> <xsl:template match="person"> <p> <xsl:value-of select="./name/text()" /> </p> </xsl:template> <!-- Adding names --> <xsl:template match="age"> <p> <xsl:value-of select="./text()" /> </p> </xsl:template> </xsl:stylesheet> 当我运行它时,我得到的结果是这样的: <html> <body> <p>John Doe</p> <p>Jane Smith</p> <p>Sam nkmk</p> </body> </html> 这是出乎意料的,因为我想要人们的姓名和年龄,因为我定义了这两个模板。 在 this 问题的答案之一中,如下所述 XSLT 默认模板规则的定义方式是,默认情况下,它们将匹配文档的顶部节点,然后递归处理每个子节点节点,一直到底部,很公平,所以从技术上讲,人们会期望处理person节点,然后是子节点,并且由于有年龄模板,因此应该将年龄添加到html中,但事实并非如此。 (另外,根据this问题的第一个答案,它甚至应该打印姓名和职业,因为我没有定义与文本匹配的模板,就像这样)。 鉴于我是 XSLT 新手,所有这些都让我感到非常困惑。 你能向我解释一下这是怎么回事吗? 您遗漏了报价的重要部分,即“默认情况下”。 您的模板匹配person会覆盖默认的内置模板 - 并且它不会将模板应用于age(或任何其他)子级person。因此,匹配 age 的模板永远不会被实例化,否则会处理 person 的其他子级的内置模板也不会被实例化。

回答 1 投票 0

如何使用 Python 替换 HTML 标签内文本中的 XML 特殊字符

我对Python还很陌生。我一直在从事一个网页抓取项目,该项目从各种网页中提取数据,使用这些数据构建一个新的 HTML 页面,并将该页面发送到文档管理

回答 1 投票 0

geojson 中的坐标顺序

我正在通过 GitHub 以 geojson 格式测试数据渲染,因为我想将其用于 INSPIRE 数据。 INSPIRE 数据采用 GML 3.2.1 格式。我已经从 http://services 下载了一个数据集...

回答 2 投票 0

使用quick_xml和serde序列化数据时如何添加xml声明?

我正在尝试使用quick_xml的serde功能在xml和rust之间进行序列化和反序列化。下面显示的一个最小示例效果很好。然而,当我序列化回 xml 时,我不再

回答 1 投票 0

Android Kotlin - 使 TextView 中的链接可点击

在 strings.xml 中我有关键字 by_continuing_you_agree_terms_and_policy 字符串 继续操作即表示您同意我们的服务条款和隐私...

回答 3 投票 0

如何在java中对XML进行转义

我需要对包含转义 XML 标签的 xml 字符串进行转义: < > & ETC... 我确实找到了一些可以执行此任务的库,但我宁愿使用可以执行此任务的单一方法...

回答 4 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.