gpt4 book ai didi

iphone - iPhone 中的 XSLT 版本

转载 作者:行者123 更新时间:2023-12-03 18:24:01 26 4
gpt4 key购买 nike

我计划在我的 iPhone 应用程序中使用 XML/XSLT。

iPhone 目前支持什么版本的 XSLT?我可以使用 XSLT 2.0 还是仅使用 1.0?

最佳答案

在 iPhone 操作系统上使用 libxslt 实际上非常简单:

  1. Download the source-code of libxslt并提取它。
  2. 将“libxslt”目录添加到build设置中的 header 搜索路径。另外,添加 libxml-headers 的路径(通常为 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/include/libxml2)。
  3. 将 libxml2.2.dylib 和 libxslt.dylib 添加到链接的框架(Xcode“组和文件”面板:右键单击“框架”-->“添加”-->“现有框架”)框架...”)。
  4. 创建一个简单的 XML 文件及其 XSL 转换。

最后,您可以使用类似于上面示例的代码将转换结果转换为 NSString(例如,显示在 UIWebView 中):

#import <libxml/xmlmemory.h>
#import <libxml/debugXML.h>
#import <libxml/HTMLtree.h>
#import <libxml/xmlIO.h>
#import <libxml/xinclude.h>
#import <libxml/catalog.h>
#import <libxslt/xslt.h>
#import <libxslt/xsltInternals.h>
#import <libxslt/transform.h>
#import <libxslt/xsltutils.h>

...

NSString* filePath = [[NSBundle mainBundle] pathForResource: @"article" ofType: @"xml"];
NSString* styleSheetPath = [[NSBundle mainBundle] pathForResource: @"article_transform" ofType:@"xml"];

xmlDocPtr doc, res;

// tells the libxml2 parser to substitute entities as it parses your file
xmlSubstituteEntitiesDefault(1);
// This tells libxml to load external entity subsets
xmlLoadExtDtdDefaultValue = 1;

sty = xsltParseStylesheetFile((const xmlChar *)[styleSheetPath cStringUsingEncoding: NSUTF8StringEncoding]);
doc = xmlParseFile([filePath cStringUsingEncoding: NSUTF8StringEncoding]);
res = xsltApplyStylesheet(sty, doc, NULL);

char* xmlResultBuffer = nil;
int length = 0;

xsltSaveResultToString(&xmlResultBuffer, &length, res, sty);

NSString* result = [NSString stringWithCString: xmlResultBuffer encoding: NSUTF8StringEncoding];

NSLog(@"Result: %@", result);

free(xmlResultBuffer);

xsltFreeStylesheet(sty);
xmlFreeDoc(res);
xmlFreeDoc(doc);

xsltCleanupGlobals();
xmlCleanupParser();

关于iphone - iPhone 中的 XSLT 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/462440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com